<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://cc.practices.tools/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Simoon</id>
	<title>Creative Crowds wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://cc.practices.tools/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Simoon"/>
	<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/Special:Contributions/Simoon"/>
	<updated>2026-08-28T06:56:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=File:Varia-darktimes-stickers.pdf&amp;diff=5641</id>
		<title>File:Varia-darktimes-stickers.pdf</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=File:Varia-darktimes-stickers.pdf&amp;diff=5641"/>
		<updated>2026-07-31T18:08:55Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Working_with_what%27s_there&amp;diff=5640</id>
		<title>Working with what&#039;s there</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Working_with_what%27s_there&amp;diff=5640"/>
		<updated>2026-07-31T18:07:47Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:varia-darktimes-sticker-sheet.jpeg|thumb|The full sticker set]]&lt;br /&gt;
[[File:varia-darktimes-sticker-on-laptop.jpeg|thumb|One of the stickers on my laptop]]&lt;br /&gt;
[[File:varia-darktimes-stickers.pdf|A PDF of the sticker sheet]]&lt;br /&gt;
&lt;br /&gt;
If we consider design to be a collaborative, transformative activity of world-building as opposed to just problem-solving, how to think about the materials, entities, and groups that are there to work with?&lt;br /&gt;
&lt;br /&gt;
What does it mean to &#039;&#039;work with material that is already there&#039;&#039;? What does this bring to a design practice?&lt;br /&gt;
&lt;br /&gt;
I&#039;m trying to articulate this in writing on this page. Here is a place to start gathering thoughts around these topics:&lt;br /&gt;
&lt;br /&gt;
* starting from the middle&lt;br /&gt;
* entry points into ongoing conversations around collaborative and collective practices&lt;br /&gt;
* working within a material practice (I want to relate this to [[With_Simon_about_experimental_publishing|these thoughts]] about experimental publishing)&lt;br /&gt;
* autonomy (choosing inter-dependencencies)&lt;br /&gt;
* subsistence and frugality&lt;br /&gt;
* immediacy and DIY&lt;br /&gt;
* collaboration and DIWO&lt;br /&gt;
* finding joy and inspiration within limitations&lt;br /&gt;
* pedagogy and figuring things out together&lt;br /&gt;
* improvisation and ad-hoc approaches&lt;br /&gt;
&lt;br /&gt;
One example of working with what&#039;s there is an improvised sticker set I made for an issue of SomeTimes with Danny at Varia. We were struggling to find inspiration while designing stickers that reflected the theme of Varia&#039;s 2025/2026 Seasonal Computing public programme. Danny suggested making a &amp;quot;dark&amp;quot; sticker set, which contained inside jokes and puns. I had some pre-cut circular sticker sheets laying around from a project in 2012, so I decided to try out some designs that I could print myself. I designed a sheet using a font I bootlegged in 2015 from an Inuit calendar. I&#039;ve been using this font quite a lot lately, because it is there. The apostrophes as accidentally reversed, but I don&#039;t want to fix that because it is not necessary and the font will only be used for display text. What is more important is that the font, like the pre-cut sticker sheets, is at easily at hand.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5618</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5618"/>
		<updated>2026-06-18T19:11:27Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, made by Laura (who we met at the Des*gn Week in Linz), Letícia &amp;amp; Ece (January, 2026). Read the zine here: https://lefoe.at/wp-content/uploads/2026/01/Web_1.pdf&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
File:resources-for-radical-infrastructures.jpeg|&#039;&#039;resources for Radical Infrastructures, Permacomputing, Stealth Hosting and Other Networks&#039;&#039;, notes and recipes from a collection of workshops, made by Colm O&#039;Neill (et al) 2025/2026, published June 2026. Read the zine here: https://gitlab.com/colmoneill/wilderland.ie/-/blob/main/zine-fascimile/resources-for-radical-infrastructures.pdf&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5617</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5617"/>
		<updated>2026-06-18T19:10:18Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, made by Laura (who we met at the Des*gn Week in Linz), Letícia &amp;amp; Ece (January, 2026). Read the zine here: https://lefoe.at/wp-content/uploads/2026/01/Web_1.pdf&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
File:resources-for-radical-infrastructures.jpeg|&#039;&#039;resources for Radical Infrastructures, Permacomputing, Stealth Hosting and Other Networks&#039;&#039;, notes and recipes from a collection of workshops, made by Colm O&#039;Neill (et al) 2025/2026. Read the zine here: https://gitlab.com/colmoneill/wilderland.ie/-/blob/main/zine-fascimile/resources-for-radical-infrastructures.pdf&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5616</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5616"/>
		<updated>2026-06-18T19:09:28Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, made by Laura (who we met at the Des*gn Week in Linz), Letícia &amp;amp; Ece (January, 2026). Read the zine here: https://lefoe.at/wp-content/uploads/2026/01/Web_1.pdf&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
File:resources-for-radical-infrastructures.jpeg|&#039;&#039;resources for Radical Infrastructures, Permacomputing, Stealth Hosting and Other Networks &#039;&#039;, notes and recipes from a collection of workshops, made by Colm O&#039;Neill (et al) 2025/2026. Read the zine here: https://gitlab.com/colmoneill/wilderland.ie/-/blob/main/zine-fascimile/resources-for-radical-infrastructures.pdf&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=File:Resources-for-radical-infrastructures.jpeg&amp;diff=5615</id>
		<title>File:Resources-for-radical-infrastructures.jpeg</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=File:Resources-for-radical-infrastructures.jpeg&amp;diff=5615"/>
		<updated>2026-06-18T19:08:55Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5614</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5614"/>
		<updated>2026-06-18T19:08:32Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, made by Laura (who we met at the Des*gn Week in Linz), Letícia &amp;amp; Ece (January, 2026). Read the zine here: https://lefoe.at/wp-content/uploads/2026/01/Web_1.pdf&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
File:resources-for-radical-infrastructures.jpeg|&#039;&#039;resources for Radical Infrastructures, Permacomputing, Stealth Hosting and Other Networks &#039;&#039;, notes and recipes from a collection of workshops, made by Colm O&#039;Neil (et al) 2025/2026. Read the zine here: https://gitlab.com/colmoneill/wilderland.ie/-/blob/main/zine-fascimile/resources-for-radical-infrastructures.pdf&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=How_to_install_wiki-to-print%3F&amp;diff=5613</id>
		<title>How to install wiki-to-print?</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=How_to_install_wiki-to-print%3F&amp;diff=5613"/>
		<updated>2026-06-03T07:42:36Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source code==&lt;br /&gt;
&lt;br /&gt;
https://git.vvvvvvaria.org/CC/wiki-to-print.git&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
* mediawiki&lt;br /&gt;
** localsettings: https://git.vvvvvvaria.org/varia/wiki-to-print/src/branch/master/wiki-to-print.LocalSettings.php.example&lt;br /&gt;
** common.css: https://git.vvvvvvaria.org/varia/wiki-to-print/src/branch/master/wiki-to-print.Common.css.example&lt;br /&gt;
** common.js: https://git.vvvvvvaria.org/varia/wiki-to-print/src/branch/master/wiki-to-print.Common.js.example&lt;br /&gt;
** php-fpm&lt;br /&gt;
** mysql/mariadb&lt;br /&gt;
** nginx&lt;br /&gt;
** config: https://git.vvvvvvaria.org/varia/wiki-to-print/src/branch/master/wiki-to-print.nginx.example&lt;br /&gt;
** extensions: https://cc.practices.tools/wiki/Special:Version&lt;br /&gt;
* web app&lt;br /&gt;
** flask&lt;br /&gt;
** nginx config: https://git.vvvvvvaria.org/varia/wiki-to-print/src/branch/master/wiki-to-print.nginx.example&lt;br /&gt;
** beautifulsoup&lt;br /&gt;
** (gunicorn) -- (only if you want to configure your url as a subdirectory, for example: https://cc.practices.tools/wiki-to-print/ and not as a subdomain, like: https://wiki-to-print.practices.tools) &lt;br /&gt;
* pandoc&lt;br /&gt;
* service file: https://git.vvvvvvaria.org/varia/wiki-to-print/src/branch/master/wiki-to-print.service.example&lt;br /&gt;
&lt;br /&gt;
==Preparations==&lt;br /&gt;
&lt;br /&gt;
===Make a wikitoprint system user===&lt;br /&gt;
&lt;br /&gt;
We will make an “wikitoprint” user on the server to run wiki-to-print with this user. In this way we can restrict the access of this user to the rest of the server. &lt;br /&gt;
&lt;br /&gt;
Make a system user called “wikitoprint”. &lt;br /&gt;
&lt;br /&gt;
 # useradd --system --no-create-home --shell=/sbin/nologin wikitoprint &lt;br /&gt;
&lt;br /&gt;
Give read and write access + ownership to the &amp;lt;code&amp;gt;/opt/wiki-to-print&amp;lt;/code&amp;gt; folder to the wikitoprint user. &lt;br /&gt;
&lt;br /&gt;
 # chown -R wikitoprint:wikitoprint /opt/wiki-to-print&lt;br /&gt;
&lt;br /&gt;
 # chmod -R u+rw /opt/wiki-to-print&lt;br /&gt;
&lt;br /&gt;
==To install wiki-to-print==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;make setup&amp;lt;/code&amp;gt;: make a virtual environment and install all the requirements&lt;br /&gt;
# edit &amp;lt;code&amp;gt;config.json&amp;lt;/code&amp;gt;: to configure the Flask application&lt;br /&gt;
# run the Flask application&lt;br /&gt;
## on your computer: &amp;lt;code&amp;gt;make local&amp;lt;/code&amp;gt;&lt;br /&gt;
## on a server: &amp;lt;code&amp;gt;make server&amp;lt;/code&amp;gt; (it uses Gunicorn, as we work with a subdirectory in the wiki-to-print URL on CC, with https://cc.practices.tools/wiki-to-print/ as the root of the Flask application)&lt;br /&gt;
# add a proxy_pass to your webserver configuration, to bind web requests with Gunicorn, here is an example: https://git.vvvvvvaria.org/CC/wiki-to-print/src/branch/master/wiki-to-print.nginx.example&lt;br /&gt;
# add the following to your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file: [https://git.vvvvvvaria.org/CC/wiki-to-print/src/branch/master/wiki-to-print.LocalSettings.php.example wiki-to-print.LocalSettings.php.example]&lt;br /&gt;
# add the following code to the [[MediaWiki:Common.js]] page: [https://git.vvvvvvaria.org/CC/wiki-to-print/src/branch/master/wiki-to-print.Common.js.example wiki-to-print.Common.js.example]&lt;br /&gt;
# add the following code to the [[MediaWiki:Common.css]] page: [https://git.vvvvvvaria.org/CC/wiki-to-print/src/branch/master/wiki-to-print.Common.css.example wiki-to-print.Common.css.example]&lt;br /&gt;
# you can create a systemd service file in the &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; folder, to run wiki-to-print in the background as a service; here is an example: [https://git.vvvvvvaria.org/CC/wiki-to-print/src/branch/master/wiki-to-print.service.example wiki-to-print.service.example] and you can find more details on this page: [[Running wiki-to-print on the server]]. After making it, run: &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;systemctl enable wiki-to-print&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;systemctl start wiki-to-print&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Wiki-to-print/Installation log/Servpub|A more messy but way much longer installation log can be found here]].&lt;br /&gt;
&lt;br /&gt;
==Flask application==&lt;br /&gt;
&lt;br /&gt;
The Flask application is based around the following URLs/routes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! button !! URL/route !! Flask action&lt;br /&gt;
|-&lt;br /&gt;
| Unfolded || [[Pdf:Test]] || -&lt;br /&gt;
|-&lt;br /&gt;
| CSS! || https://cc.practices.tools/wiki-to-print/static/Test.css || renders PdfCSS:Test as CSS stylesheet&lt;br /&gt;
|-&lt;br /&gt;
| Preview HTML || https://cc.practices.tools/wiki-to-print/html/Test || renders Pdf:Test as HTML page, using PdfCSS:Test as CSS stylesheet&lt;br /&gt;
|-&lt;br /&gt;
| Preview PDF || https://cc.practices.tools/wiki-to-print/pdf/Test || renders Pdf:Test as PDF preview page (using Paged.js), using PdfCSS:Test as CSS stylesheet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For a more detailed description of how to work with these buttons, see: [[How to work with wiki-to-print?]]&lt;br /&gt;
&lt;br /&gt;
==Special namespaces==&lt;br /&gt;
&lt;br /&gt;
Wiki-to-print uses the &amp;lt;code&amp;gt;Pdf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PdfCSS&amp;lt;/code&amp;gt; namespaces to customize the navigation bar. &lt;br /&gt;
&lt;br /&gt;
This means that all wiki-to-print Unfolded pages start with &amp;lt;code&amp;gt;Pdf:&amp;lt;/code&amp;gt; and all CSS pages start with &amp;lt;code&amp;gt;PdfCSS:&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The wiki-to-print buttons are added and adjusted with Javascript, using [[MediaWiki:Common.js]]. [[MediaWiki:Common.css]] is used to style the buttons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki-to-print]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Wiki-to-print&amp;diff=5605</id>
		<title>Wiki-to-print</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Wiki-to-print&amp;diff=5605"/>
		<updated>2026-04-28T06:51:33Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* About wiki-to-print */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About wiki-to-print==&lt;br /&gt;
Wiki-to-print is a collective publishing environment that hooks into wiki practices and cultures. It uses MediaWiki software&amp;lt;ref&amp;gt;https://www.mediawiki.org&amp;lt;/ref&amp;gt;, CSS Print rules&amp;lt;ref&amp;gt;https://www.w3.org/TR/css-page-3/&amp;lt;/ref&amp;gt; and Paged.js&amp;lt;ref&amp;gt;https://pagedjs.org&amp;lt;/ref&amp;gt;, to render a preview of the PDF in the browser. Using wiki-to-print allows us to work shoulder-to-shoulder as collaborative writers, editors, designers, developers, in a non-linear publishing workflow where design and content unfolds at the same time, allowing the one to shape the other.&lt;br /&gt;
&lt;br /&gt;
Following the idea of &amp;quot;boilerplate code&amp;quot; which is written to be reused, we like to think of wiki-to-print as a boilerplate as well, instead of thinking of it as a product, platform or tool. The code that is running in the background is a version of previous &#039;&#039;wiki-printing&#039;&#039; instances, including:&lt;br /&gt;
&lt;br /&gt;
* the work on the Diversions&amp;lt;ref&amp;gt;https://diversions.constantvzw.org&amp;lt;/ref&amp;gt; publications by Constant&amp;lt;ref&amp;gt;https://constantvzw.org&amp;lt;/ref&amp;gt; and OSP&amp;lt;ref&amp;gt;https://osp.kitchen&amp;lt;/ref&amp;gt;&lt;br /&gt;
* the book Volumetric Regimes&amp;lt;ref&amp;gt;http://data-browser.net/db08.html + https://volumetricregimes.xyz&amp;lt;/ref&amp;gt; by Possible Bodies&amp;lt;ref&amp;gt;https://possiblebodies.constantvzw.org&amp;lt;/ref&amp;gt; and Manetta Berends&amp;lt;ref&amp;gt;https://manettaberends.nl&amp;lt;/ref&amp;gt;&lt;br /&gt;
* TITiPI&#039;s&amp;lt;ref&amp;gt;http://titipi.org&amp;lt;/ref&amp;gt; &#039;&#039;wiki-to-pdf&#039;&#039; environments&amp;lt;ref&amp;gt;https://titipi.org/wiki/index.php/Wiki-to-pdf&amp;lt;/ref&amp;gt; by Martino Morandi&lt;br /&gt;
* Hackers and Designers&#039;&amp;lt;ref&amp;gt;https://hackersanddesigners.nl&amp;lt;/ref&amp;gt; version &#039;&#039;wiki2print&#039;&#039;&amp;lt;ref&amp;gt;https://github.com/hackersanddesigners/wiki2print&amp;lt;/ref&amp;gt; that was produced for the book Making Matters&amp;lt;ref&amp;gt;https://hackersanddesigners.nl/s/Publishing/p/Making_Matters._A_Vocabulary_of_Collective_Arts&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, wiki-to-print/wiki-to-pdf/wiki2print is not standalone, but part of a continuum of projects that see software as something to learn from, adapt, transform and change. You can find the code of the version that is running on this wiki here&amp;lt;ref&amp;gt;https://git.vvvvvvaria.org/CC/wiki-to-print&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This wiki-to-print is hosted at CC&amp;lt;ref&amp;gt;https://cc.practices.tools&amp;lt;/ref&amp;gt; (&#039;&#039;creative crowds&#039;&#039;). While moving from &#039;&#039;cloud&#039;&#039; to &#039;&#039;crowds&#039;&#039;, CC is a thinking device for us how to hand over ways of working and share a space for publishing experiments with others.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Create a wiki-to-print environment==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{#createpage:Pdf||create|}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links to get started with==&lt;br /&gt;
&lt;br /&gt;
* [[Editing Guide]] (writing)&lt;br /&gt;
* [[How to work with wiki-to-print?]] (editing, layout making)&lt;br /&gt;
* [[How is wiki-to-print made?]] (transformations)&lt;br /&gt;
* [[How to install wiki-to-print?]] (installing)&lt;br /&gt;
* [[Running_wiki-to-print_on_the_server|How to run wiki-to-print on a server?]] (sysadmin)&lt;br /&gt;
&lt;br /&gt;
==Wiki-to-print boilerplates==&lt;br /&gt;
&lt;br /&gt;
* APRJA Boilerplate: [[APRJA Example Article|Example Article (5000 words)]], [[Pdf:APRJA Boilerplate|APRJA journal boilerplate]], [[PdfCSS:APRJA Boilerplate|CSS stylesheet]], [https://cc.vvvvvvaria.org/wiki-to-print/pdf/APRJA_Boilerplate PDF preview]&lt;br /&gt;
&lt;br /&gt;
==Created wiki-to-print environments==&lt;br /&gt;
&lt;br /&gt;
These are some wiki-to-print environments that have been used so far:&lt;br /&gt;
&lt;br /&gt;
{{Special:AllPages/Pdf:}}&lt;br /&gt;
&lt;br /&gt;
==Publications made with wiki-to-print==&lt;br /&gt;
&lt;br /&gt;
* [[Toward a Minor Tech]] (Feb 2023)&lt;br /&gt;
* [[Content-Form|Content/Form]] (Feb 2024)&lt;br /&gt;
* [[Tools_shape_practice_shapes_tools|Tools shape practice shapes tools]] (Dec 2025)&lt;br /&gt;
&lt;br /&gt;
==wiki-to-print log==&lt;br /&gt;
&lt;br /&gt;
See the issue tracker of the git repository: https://git.vvvvvvaria.org/CC/wiki-to-print/issues&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki-to-print]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5604</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5604"/>
		<updated>2026-04-19T23:42:19Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, made by Laura (who we met at the Des*gn Week in Linz), Letícia &amp;amp; Ece (January, 2026). Read the zine here: https://lefoe.at/wp-content/uploads/2026/01/Web_1.pdf&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5603</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5603"/>
		<updated>2026-04-19T23:41:37Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, made by Laura (who we met at the Des*gn Week in Linz), Letícia &amp;amp; Ece (January, 2026). Read the zine [[here https://lefoe.at/wp-content/uploads/2026/01/Web_1.pdf]]&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5602</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5602"/>
		<updated>2026-04-19T23:41:11Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, made by Laura (who we met at the Des*gn Week in Linz), Letícia &amp;amp; Ece (January, 2026). Reas the zine [here https://lefoe.at/wp-content/uploads/2026/01/Web_1.pdf]&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5601</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5601"/>
		<updated>2026-04-19T23:39:44Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, made by Laura (who we met at the Des*gn Week in Linz), Letícia &amp;amp; Ece (January, 2026)&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=File:Thoughts-on-sex-work.png&amp;diff=5600</id>
		<title>File:Thoughts-on-sex-work.png</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=File:Thoughts-on-sex-work.png&amp;diff=5600"/>
		<updated>2026-04-19T23:33:53Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5599</id>
		<title>Octomode</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Octomode&amp;diff=5599"/>
		<updated>2026-04-19T23:33:31Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Made with Octomode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
Inspired by the multi-centered, tentacular cognition capabilities of the octopus, we imagined a space in which the artificial boundaries of writing and design can be crossed; where writing, editing and designing can be done in one environment simultaneously, allowing the format to influence the matter and vice-versa.&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Ongoing circulations==&lt;br /&gt;
&lt;br /&gt;
Octomode is strongly relying on (Ether)pad and shared habits of collective note taking in such collaborative environments. In the end, octomode is just a combination of a few free software tools, and we like to think of octomode as a boilerplate, that can be re-configured and re-transformed into other possible environments. It strongly learned from the inspiring work of the following projects: &lt;br /&gt;
&lt;br /&gt;
* [http://osp.kitchen/tools/ethertoff/ Ethertoff] by OSP&lt;br /&gt;
* [https://networksofonesown.constantvzw.org/ Etherbox] by Constant&lt;br /&gt;
* [https://gitlab.constantvzw.org/aa/etherdump etherdump] by Michael Murtaugh&lt;br /&gt;
* [https://relearn.be/2015/ the local network + etherpad setup] during Relearn 2015&lt;br /&gt;
* [https://calibre.constantvzw.org/book/34 The Techno-Galactic Guide to Software Observation] by Constant&lt;br /&gt;
&lt;br /&gt;
Octomode is published under [https://git.vvvvvvaria.org/varia/octomode/src/branch/master/LICENSE.txt CC4r]: please feel free to use, change, transform and republish into many directions, within the limits of the conditions formulated by the COLLECTIVE CONDITIONS FOR RE-USE (CC4r) license.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! octomode instance !! maintained by !! version !! features !! code !! context&lt;br /&gt;
|-&lt;br /&gt;
| https://cc.practices.tools/octomode/ || [https://cc.practices.tools Creative Crowds (CC)] || CC || main features || https://git.vvvvvvaria.org/CC/octomode || The CC octomode instance, used by us and a network of peers around us, including OSP, XPUB students, Pibliotheque, Varia and others; used for the making of zines, publications which are often personal projects, workshop outputs or sometimes also commissioned work. &lt;br /&gt;
|-&lt;br /&gt;
| https://circulations.constantvzw.org/octomode/ || [https://constantvzw.org/ Constant] || technodisobedience || main features &amp;lt;br&amp;gt;+ RISO color seperation, epub export, markdown import || https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ || Constant&#039;s octomode instance as part of their SPLINT 5-year research trajectory and SPLINTER server, used for the making of zines, EPUBs and annual publications that document all their activities of that year, such as [https://calibre.constantvzw.org/book/207 Techno-disobedience] published in December 2023 and [https://constantvzw.org/site/Zine-launch-Otherwordly-Communications.html Otherworldly Communications zine] published in March 2026.&lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.hackersanddesigners.nl || [https://hackersanddesigners.nl/ H&amp;amp;D] || CC || main features || https://github.com/hackersanddesigners/octomode (fork, no additional changes) || The octomode instance of Hackers &amp;amp; Designers, used to make publications such as [https://hackersanddesigners.nl/hd-bulletin-6.html HD Bulletin 6] + [https://hackersanddesigners.nl/hd-bulletin-7.html HD Bulletin 7]. Octomode was also used during a workshop at one of the HD summercamps, but I can&#039;t find it back sadly. &lt;br /&gt;
|-&lt;br /&gt;
| https://octomode.vvvvvvaria.org || [https://varia.zone varia] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || This was octomode&#039;s first URL! Currently it&#039;s pointing to the Varia octomode instance, used by Varia members to make the SomeTimes (edition [https://varia.zone/en/2022/sometimes-af-en-toe/ 1] [https://varia.zone/en/2024/sometimes5/ 5] [https://varia.zone/en/2025/some-times-6/ 6]), write funding applications and reports, make zines and other things. &lt;br /&gt;
|-&lt;br /&gt;
| https://hub.vvvvvvaria.org/rosa/octomode/ || [https://varia.zone/ATNOFS/ ATNOFS] || CC || main features || https://git.vvvvvvaria.org/varia/octomode || Octomode is part of Rosa&#039;s &#039;&#039;resonance board&#039;&#039;, the landing page of this traveling feminist server: &#039;&#039;The resonance board is a shared space which gathers and folds pads, messages and files hosted on rosa. On the resonance board you can start a new pad, use octomode, use the shared ile system, traverse the list of pads already created, read messages on the folding board, and browse the files that have been uploaded to the chapters folder.&#039;&#039; ([https://zoiahorn.anarchaserver.org/wp-content/uploads/2023/03/ATNOFS-screen.pdf#page=9 link])&lt;br /&gt;
|-&lt;br /&gt;
| https://lepa.hackersanddesigners.nl/ || [https://hackersanddesigners.nl/ H&amp;amp;D] || Learning Palestine || main features &amp;lt;br&amp;gt;+ Markdown cheatsheet, [https://www.npmjs.com/package/ep_markdown_toc Etherpad table of content plugin] ([https://etherpad.hackersanddesigners.nl/p/ep_plugins documented here]), impositioned PDF export || || A custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &#039;&#039;&amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;&#039;&#039;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. The project was presented during a [https://hackersanddesigners.nl/bulletin-7-launch-at-fort-van-sjakoo.html HD Bulletin launch] at [https://sjakoo.nl/ Het Fort van Sjakoo] in June 2025. &lt;br /&gt;
|-&lt;br /&gt;
| https://zine.luddite.tools/ || [https://luddite.tools/ The Luddite Academy/David Benque]  || CC || main features &amp;lt;br&amp;gt;+ [https://codeberg.org/luddite-academy/octomode/commit/7eebbd1098f44de743a97394468b49672bf368d7 patch for not working Etherpad URLs] || https://codeberg.org/luddite-academy/octomode || &#039;&#039;The project was [is] titled &amp;quot;The Luddite Academy&amp;quot; and proposed to bring the current resurgence of luddite theory and praxis to bear on the university&#039;s digital arts and humanities departments.&#039;&#039; ([https://post.lurk.org/@diagram_studies/115768866079004997 link])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to use octomode?==&lt;br /&gt;
&lt;br /&gt;
If you want to work collectively on a PDF, you can make a new octomode environment here: https://cc.practices.tools/octomode/. &lt;br /&gt;
&lt;br /&gt;
You can write any name of in the input field, this will be the name of the new octomode environment and pads that are used. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: When working with multiple people on one PDF it is recommended to use the same browser. CSS rules are rendered slightly differently on different browsers.&lt;br /&gt;
&lt;br /&gt;
Working in octomode includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;: all materials for the PDF are collected here. (written in Markdown)&lt;br /&gt;
* &amp;lt;code&amp;gt;stylesheet&amp;lt;/code&amp;gt;: all CSS rules for the PDF are collected here (written in CSS)&lt;br /&gt;
* &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: render the lay out as a HTML (rendered with PyPandoc)&lt;br /&gt;
* &amp;lt;code&amp;gt;pdf&amp;lt;/code&amp;gt;: render the lay out as a PDF (rendered with Paged.js)&lt;br /&gt;
&lt;br /&gt;
When creating a new environment, a few things happen:&lt;br /&gt;
&lt;br /&gt;
* a pad is created for collecting the materials of your PDF. The name of the octomode environment will become the name of this pad. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* another pad is created for writing the stylesheet of your PDF. The name of the octomode environment will become the name of this pad, followed by .css. For example: &amp;lt;code&amp;gt;https://cc.practices.tools/pad/p/NAME.css&amp;lt;/code&amp;gt;&lt;br /&gt;
* If both pads were not created yet, a template is added to the pad. The main pad will get a Markdown template and the stylesheet pad a CSS template.&lt;br /&gt;
&lt;br /&gt;
In case a pad was already made, you can copy the templates below and paste them at the top of your pads.&lt;br /&gt;
&lt;br /&gt;
The PDFs are rendered using [https://pagedjs.org/ Paged.js], a free and open source JavaScript library &amp;quot;that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!&amp;quot; The project used to be maintained by the [https://coko.foundation/ Coko Foundation] but is currently on its own feet! Paged.js adds not (yet) implemented CSS rules to the ones that browsers implemented already, expanding the possibilities to make lay outs for specific sections, place content in the margins of pages, and render indexes (amongst other things). The Paged.js documentation is very helpful and can be found here: https://pagedjs.org/documentation/.&lt;br /&gt;
&lt;br /&gt;
==How to install octomode?==&lt;br /&gt;
&lt;br /&gt;
[[Installing octomode]]&lt;br /&gt;
&lt;br /&gt;
==CSS Print==&lt;br /&gt;
&lt;br /&gt;
Some CSS Print examples can be found at: [[CSS Print]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
At the top of the pad for content is a metadata block:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: octomode&lt;br /&gt;
 language: en&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
When things go wrong in situations when many people are working together, it is often that someone has typed something at the start of the pad before the metadata block, or there is some syntax error in the metadata block. For example, using two colons in the title field will make it break:&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
 title: My cool title: and subtitle&lt;br /&gt;
 language: en&lt;br /&gt;
 --- &lt;br /&gt;
&lt;br /&gt;
The title is only there to make the name of the PDF file when it is exported, and the language can be set to something other than English. But this metadata must be there, and there must be three hyphens (---) opening and closing the metadata block.&lt;br /&gt;
&lt;br /&gt;
== Error log ==&lt;br /&gt;
&lt;br /&gt;
For some adventures in Octomode, see the [[Error log]].&lt;br /&gt;
&lt;br /&gt;
==Made with Octomode==&lt;br /&gt;
&lt;br /&gt;
A partial collection of zines, publications, sticker sets and web posters made with octomode. &lt;br /&gt;
&lt;br /&gt;
The list is not complete, but that&#039;s also not the point. It is here to give an idea what kind of things are made. &lt;br /&gt;
&lt;br /&gt;
And it&#039;s also here as an archive of the practices that have grown around octomode. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=250 heights=300&amp;gt;&lt;br /&gt;
File:SomeTimes number-1.pdf|First edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; by Varia (April, 2022) &lt;br /&gt;
File:Af-en-toe nummer-1.pdf|Eerste editie van de &#039;&#039;[[SomeTimes|Af en Toe]]&#039;&#039; by Varia (april, 2022)&lt;br /&gt;
File:SomeTimes number-3.pdf|Third edition of the &#039;&#039;[[SomeTimes]]&#039;&#039; made for the 12th of October Counter-Cloud Action day, by Varia (October, 2023)&lt;br /&gt;
File:Bulgarian-Antifascist-Bulletin 1 2023.pdf|&#039;&#039;[[Bulgarian antifascist bulletin]]&#039;&#039; (2023)&lt;br /&gt;
File:ComputationalPublishingandWriting 2023.pdf|&#039;&#039;[[the title is|the title is: (and then a series of checkboxes) (insert here your suggestions :} ) +1+1+1+1+1]]&#039;&#039;, outcome of a workshop hosted by Winnie Soon and Geoff Cox (April, 2023)&lt;br /&gt;
File:Hosting-with-zine.pdf|&#039;&#039;Hosting with]]&#039;&#039; self-published by Varia, made by Angeliki, Artemis and Manetta (July, 2023)&lt;br /&gt;
File:ATNOFS-screen.pdf|&#039;&#039;[[A Traversal Network of Feminist Servers]]&#039;&#039; or ATNOFS in short, published by Varia, Hypha, Feminist Hack Meetings, Constant, esc, LURK (March 2023)&lt;br /&gt;
File:Free palestine reader.png|Front page of the [[Free palestine reader]] &lt;br /&gt;
File:Anarchokrant 4.png|Front page of the fourth edition of the [[Anarchokrant]] &lt;br /&gt;
File:Constant-techno-disobedience-2023.pdf|[[Constant SPLINT zines]] issue #1: &#039;&#039;Techno-disobedience!&#039;&#039; made by Martino Morandi, Alix Turcq, Manetta Berends (December 2023)&lt;br /&gt;
File:Social-in-the-media-bw.pdf|&#039;&#039;[[Social in the Media]]&#039;&#039;, zine made by Varia, June 2024&lt;br /&gt;
File:Bulletin-6-0.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 6 made by Hackers &amp;amp; Designers, February 2025&lt;br /&gt;
File:so-you-decided-to-make-a-zine.jpg|&#039;&#039;[[so, you decided to make a zine using octomode]]&#039;&#039;, a zine introducing how to work with octomode, made by Simon Browne during his residency in Ireland, June 2025&lt;br /&gt;
File:Scan-cover7.jpg|&#039;&#039;[[HD Bulletin]]&#039;&#039; 7 made by Hackers &amp;amp; Designers, launched June 2025&lt;br /&gt;
File:Stickers-XPUB-Charlie.png|Sticker sheet made by Charlie during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039;, a thematic trimester project at [https://xpub.nl XPUB] (spring 2025)&lt;br /&gt;
File:XPUB-SI26-Declarations.png|Declarations web poster made collectively in octomode by the XPUB students + Doriane during &#039;&#039;[[Special Issue 26: Declarations]]&#039;&#039; (spring 2025)&lt;br /&gt;
File:So-you-decided-to-make-a-zine-in-octomode.pdf|&#039;&#039;[[so, you decided to make a zine using octomode|so, you decided to make a zine in octomode]]&#039;&#039; second version! Made by Simon during the Des*gn Week in Linz (November, 2025)&lt;br /&gt;
File:thoughts-on-sex-work.png|&#039;&#039;Perspectives for Self-Determination and De-Stigmatization – Conference on Sex Work organized by maiz and LEFÖ&#039;&#039;, designed by Laura, who we met at the Des*gn Week in Linz (January, 2026)&lt;br /&gt;
File:Flyerconstanta2-82dd7.jpg|&#039;&#039;Otherworldly Communications&#039;&#039; is the 3rd annual publication of the [[Constant SPLINT zines]], designed by Sarah Magnan, published in March 2026&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versions of octomode==&lt;br /&gt;
&lt;br /&gt;
===technodisobedience===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2023&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2025-06-17 12-44-37.png|left|thumb|new buttons!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-4.png|left|thumb|the publication in CK mode]]&lt;br /&gt;
&lt;br /&gt;
[[File:Octomode-technodisobedience-5.png|left|thumb|the same page in MYK mode]]&lt;br /&gt;
&lt;br /&gt;
The art organisation Constant in BXL makes a publication to document their activities of that year and in 2023 they worked around the theme of technodisobedience: https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf&lt;br /&gt;
&lt;br /&gt;
As part of the publication making and thinking, i (Manetta) was invited to work with Martino on a publishing workflow and printed outcome. We worked on some tools that we in the end awkwardly (but with joy) called &#039;&#039;AGGREGARIOUSLY SNOWPLOWING devices&#039;&#039;: a houtje-touwtje/cobbled-together workflow to publish snippets from pads (using &#039;&#039;snowpoles&#039;&#039;) continuously throughout the year (using an &#039;&#039;aggregator&#039;&#039;). We [https://circulations.constantvzw.org/pub/constant-techno-disobedience-2023.pdf#page=37 wrote about in the publication] too.&lt;br /&gt;
&lt;br /&gt;
In the end, this annual publication was produced with the whole Constant team joined by Alix Turcq and myself, using a customized version of octomode installed on their server. The publication was RISO printed at Chez Rosi (a sweet printing place in BXL) which was a reason to add a color separation feature to octomode (!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The publication you are holding is instead the result of our step into octomode, a system that we trusted would allow us to have a publication for this year balancing collective workflows and experimental additions, but with a much more predictable timeline. In the case of this publication, we developed a custom version of octomode, that allows us to output different PDFs with color separation in view of our riso-printing at Chez Rosi in Brussel. To achieve the separation of colors, we made use of Imagemagick and a bunch of hacks in our css styles to make sure to generate both a riso simulation of the two color printing technique for the web version and the correct files to send to the risograph printer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is stored as a separate branch called [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===grilletti===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-pxlhNQ0zT5etS075qwdjsQ.jpg|thumb|left|new octomode button: EPUB !!!]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-epub-2.png|thumb|left|second step in the EPUB generation feature]]&lt;br /&gt;
&lt;br /&gt;
[[File:Grilletti-paste.png|thumb|left|another new octomode button: PASTE]]&lt;br /&gt;
&lt;br /&gt;
During an italian hackmeeting the group C.I.R.C.E. laid out a book with octomode and did a short presentation on the process, &amp;quot;very beta&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
A new button was added: EPUB (!), to generate an epub file directly from the octomode environment. When you click the button, it brings you to another page, where you can select a cover image before you generate the EPUB.&lt;br /&gt;
&lt;br /&gt;
A second button was added too: PASTE, which seems to be a way to import markdown files from either your local computer, or stored online somewhere. Hmm! &lt;br /&gt;
&lt;br /&gt;
The code will be pushed to the [https://git.vvvvvvaria.org/CC/octomode/src/branch/technodisobedience/ &amp;lt;code&amp;gt;technodisobedience&amp;lt;/code&amp;gt;] branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Learning Palestine===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2025-2026&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://hackersanddesigners.nl/ Hackers &amp;amp; Designers] are working on a custom Octomode setup for the group [https://learningpalestine.net/ Learning Palestine], to support their (re)publishing efforts of texts &amp;quot;to disseminate knowledge on the history of the ongoing struggle for justice, liberation, and freedom of Palestine and the Palestinian People&amp;quot;, outside of the hands of corporate platforms. At first they explored ways to do so without corporate social media platforms, but then also wanted to step away from corporate design tools such as Adobe InDesign. &lt;br /&gt;
&lt;br /&gt;
They started to collaborate with Hackers &amp;amp; Designers to see what role Octomode can play in this great initiative, and for this H&amp;amp;D is working on some changes and new features to how etherpads work within Octomode, which they published as a plugin here: https://www.npmjs.com/package/ep_markdown_toc and documented here: https://etherpad.hackersanddesigners.nl/p/ep_plugins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Fonts&amp;diff=5543</id>
		<title>Fonts</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Fonts&amp;diff=5543"/>
		<updated>2026-03-21T12:08:36Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Hosted on CC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hosted elsewhere==&lt;br /&gt;
&lt;br /&gt;
* https://usemodify.com An aggregator made by Raphäel Bastide&lt;br /&gt;
* https://www.design-research.be/by-womxn/ Badass Libre fonts by womxn&lt;br /&gt;
* https://velvetyne.fr/ French Libre fonts type foundry&lt;br /&gt;
* http://osp.kitchen/foundry/ The foundry of Brussel&#039;s Open Source Publishing&lt;br /&gt;
* http://www.peter-wiegel.de/ Weird and wonderful letters (mostly script and display) made by font-dabbler Peter Wiegel, for his personal  foundry &amp;quot;Cat Fonts&amp;quot;&lt;br /&gt;
* https://justseeds.org/project/justseeds-open-type-project/ &amp;quot;The Justseeds Open Type Project creates open-access fonts for activists, organizers, and movement designers&amp;quot;&lt;br /&gt;
* https://typotheque.genderfluid.space/ The typotheque of Franco-Belgian collective Bye Bye Binary&lt;br /&gt;
&lt;br /&gt;
==Hosted on CC==&lt;br /&gt;
&lt;br /&gt;
https://cc.practices.tools/fonts/&lt;br /&gt;
&lt;br /&gt;
Typefaces and fonts that are installed on CC (often) come with pre-prepared stylesheets. To use these fonts, first import the relevant stylesheet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;@import url(&#039;https://path.to.the.stylesheet/stylesheet.css&#039;);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an always under construction list of the fonts installed on CC:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! foundry !! typeface !! designer !! type !! families &amp;amp; styles || formats || licence || stylesheet&lt;br /&gt;
|-&lt;br /&gt;
| || All Con || Simon Browne || monospace, sans-serif || Regular, Bold, Extended, Big Dots, Monospace || .ttf || || https://cc.practices.tools/fonts/simoon/AC/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://authentic.website/ Authentic] || [https://authentic.website/sans Authentic Sans] || Christina Janus, Desmond Wong || sans-serif || 60, 90, 130, 150 (Regular &amp;amp; Condensed) || .otf, .woff, .woff2 || [http://www.wtfpl.net/ WTFPL] || https://cc.practices.tools/fonts/Authentic_Sans/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://typotheque.genderfluid.space Bye Bye Binary] || [https://typotheque.genderfluid.space/amiamie.html Amiamie] || Mirat Masson || sans-serif || Light, Regular, Bold, Italic || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/BBB/Amiamie-Typeface-main/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://typotheque.genderfluid.space Bye Bye Binary] || [https://typotheque.genderfluid.space/baskervvol.html Baskervvol] || Bye Bye Binary || serif || Base, Fondue || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/BBB/baskervvol/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://typotheque.genderfluid.space Bye Bye Binary] || [https://typotheque.genderfluid.space/poppins.html BBB-Poppins-TN] || Eugénie Bidaut &amp;amp; Camille°Circlude || sans-serif || Regular, Italic, Bold, Bold Italic || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/BBB/bbb-poppins-tn/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://typotheque.genderfluid.space Bye Bye Binary] || [https://typotheque.genderfluid.space/poppins.html Crozette] || Thais Cuny || decorative || Regular || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/BBB/crozette/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://typotheque.genderfluid.space Bye Bye Binary] || [https://typotheque.genderfluid.space/ductus-mono.html Ductus Mono] || Amélie Dumont || sans-serif, monospace || Regular, Calligraphic, Geometric || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/BBB/ductus-mono/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| || Computer Modern || Donald Knuth || sans, sans-serif, script, monospace || Bright, Bright_Semibold, Classical Serif Italic, Concrete, Sans, Sans Demi-Condensed, Serif, Serif Slanted, Typewriter Light, Typewriter Variable, Upright Italic || .eot, .woff, .ttf, .svg || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/Computer_Modern/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.collletttivo.it Collletttivo] || [https://www.collletttivo.it/typefaces/absans Absans] || Valerio Monopoli || sans-serif || Regular || .otf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/collletttivo/CLT-Absans/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.collletttivo.it Collletttivo] || [https://www.collletttivo.it/typefaces/necto-mono Necto Mono] || Marco Condello || monospace || Regular || .otf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/collletttivo/CLT-Necto_Mono/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.collletttivo.it Collletttivo] || [https://www.collletttivo.it/typefaces/ortica Ortica] || Ben Bovani || serif || Light, Regular, Bold, Angular || .otf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/collletttivo/CLT-Ortica/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| || [https://healtheweb.site/ Heal the Web] || Rainbow Unicorn &amp;amp; Jakub Kanior || sans-serif || A, B || .otf ||  [https://www.mozilla.org/en-US/MPL/2.0/FAQ/ MPL-2.0] || https://cc.practices.tools/fonts/HealTheWeb/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| || [https://usemodify.com/fonts/lucette/ Lucette] || Yann Linguinou || serif || Regular, Italic || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/Lucette/font/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [http://osp.kitchen/foundry/ OSP] || [http://osp.kitchen/foundry/crickx/ Crickx] || OSP || script, display || PubliFlourChrystelise, PubliFluorDroiteOuverte, PubliFluorDroiteOuverte, PubliFluorDroiteRush, PubliFluorNormale, PubliFluorNormaleOuverte, PubliFluorNormaleRush || .otf, .woff || [https://constantvzw.org/wefts/cc4r.en.html CC4R] || https://cc.practices.tools/fonts/OSP/Crickx/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| || [https://www.redaction.us/ Redaction] || Jeremy Mickel || serif || 10, 35, 50, 70, 90, 100 (Regular, Italic, Bold) || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/Redaction/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://velvetyne.fr/ Velvetyne] || [https://velvetyne.fr/fonts/degheest/ Degheest Family] || Ange Degheest, Camille Depalle, Eugénie Bidaut, Luna Delabre, Mandy Elbé, May Jolivet, Oriane Charvieux, Benjamin Gomez, Justine Herbel || pixel, monospace, sans-serif, serif || director regular, director light, director bold, director variable, abordage regular, basalte fond, basalte multicolor, basalte volume, equateur regular, ft88 bold, ft88 expanded, ft88 gothique, ft88 italic, ft88 regular, ft88 school, ft88 serif, latitude regular, louise regular || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/velvetyne/degheest-types/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://velvetyne.fr/ Velvetyne] || [https://gitlab.com/velvetyne/Happy-Times-at-the-IKOB Happy Times at the IKOB] || Lucas Le Bihan || serif || regular, bold, italic || .otf, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/velvetyne/happy-times-at-the-IKOB/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://velvetyne.fr/ Velvetyne] || Montchauve || Frank Adebiaye || modular titling fantasy || medium || .otf || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/velvetyne/montchauve/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
| [https://velvetyne.fr/ Velvetyne] || [https://github.com/CollectifWech/Savate Savate] || Collectif Wech || sans-serif || regular, italic || .eot, .svg, .ttf, .woff, .woff2 || [https://openfontlicense.org/open-font-license-official-text/ OFL 1.1] || https://cc.practices.tools/fonts/velvetyne/savate/stylesheet.css&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Main_Page&amp;diff=5536</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Main_Page&amp;diff=5536"/>
		<updated>2026-02-27T10:25:52Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;margin-left:1em;&amp;quot;&amp;gt;&amp;lt;eplite id=&amp;quot;cc-conditions&amp;quot; show-chat=&amp;quot;false&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Creative-crowds-cc.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Welcome to CC, a shared server currently maintained by Simon, Manetta and Doriane from Rotterdam/Brussels. &lt;br /&gt;
&lt;br /&gt;
With CC we explore how community gathers around specific experimental publishing tools, how hosted tools can be prototyped for activist collectivities, and how we can question and participate in a discourse around practices and tools.&lt;br /&gt;
&lt;br /&gt;
CC is currently hosting the following things:&lt;br /&gt;
&lt;br /&gt;
* [https://cc.practices.tools/octomode/ octomode] is running&lt;br /&gt;
* [[Wiki-to-print|wiki-to-print]] is configured for use&lt;br /&gt;
* [https://cc.practices.tools/etherdot/ etherdot] is stitching&lt;br /&gt;
* [https://cc.practices.tools/pad/ pads]&lt;br /&gt;
* [https://cc.practices.tools/fonts/ fonts]&lt;br /&gt;
* [https://cc.practices.tools/traces/ traces]&lt;br /&gt;
* [[Cobbled-paths|cobbled paths]] (not yet)&lt;br /&gt;
* this wiki&lt;br /&gt;
&lt;br /&gt;
If you want, you can sign the &#039;&#039;&#039;collective calendar&#039;&#039;&#039; (on the right) as a way to collect server presences together. Under the calendar you can find the &#039;&#039;&#039;CC-collective conditions for use&#039;&#039;&#039; we formulated, which is something we consider to be in flux.&lt;br /&gt;
&lt;br /&gt;
You can write us at: [mailto:cc@practices.tools cc@practices.tools]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;columns:2;column-gap:5mm;column-fill:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==A recent change==&lt;br /&gt;
&lt;br /&gt;
[[File:So-you-decided-to-make-a-zine-in-octomode.pdf|200px|thumb|left|Zine made by Simon during the Des*gn Week in Linz, November 2025]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;display:block;border:0;background:linear-gradient(yellow,white);padding:0.5em;margin:1em 0 0.5em;border-radius:25px 0 0 0;&amp;quot;&amp;gt;CC currently hosts...&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==This wiki==&lt;br /&gt;
&lt;br /&gt;
We use this wiki as a working environment to produce publications with, organise the collective CC server maintenance work, and document things we do.&lt;br /&gt;
&lt;br /&gt;
==octomode==&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;more info&#039;&#039;&#039;: [[Octomode|octomode]] &amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
The version installed on CC is open for use but it is password protected, reach out to us to ask for it, we share the password in an open ended network of trusted-peers and trusted-peers-of-peers.&lt;br /&gt;
&lt;br /&gt;
[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
==wiki-to-print==&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/wiki/Pdf:Unfolding&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;more info&#039;&#039;&#039;: [[wiki-to-print]] &amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/wiki-to-print&lt;br /&gt;
&lt;br /&gt;
Wiki-to-print is a collective publishing environment that hooks into wiki practices and cultures. It uses MediaWiki software, CCS Print rules and Paged.js, to render a preview of the PDF in the browser.&lt;br /&gt;
&lt;br /&gt;
The version installed on CC is internally used. But if you&#039;re curious to try it, let us know.&lt;br /&gt;
&lt;br /&gt;
[[File:Wiki-to-print.gv.svg|200px]]&lt;br /&gt;
&lt;br /&gt;
==pads==&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/pads/&lt;br /&gt;
&lt;br /&gt;
Pads on CC are open for use for things related to CC in some way.&lt;br /&gt;
&lt;br /&gt;
==fonts==&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/fonts/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;more info&#039;&#039;&#039;: [[Fonts]]&lt;br /&gt;
&lt;br /&gt;
We are hosting a very adhocly selected list of fonts to use them in web-to-print projects.&lt;br /&gt;
&lt;br /&gt;
==traces==&lt;br /&gt;
&lt;br /&gt;
→  &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/traces/&lt;br /&gt;
&lt;br /&gt;
Here we collect traces of our practices crossing with CC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Main_Page&amp;diff=5535</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Main_Page&amp;diff=5535"/>
		<updated>2026-02-27T10:18:37Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;margin-left:1em;&amp;quot;&amp;gt;&amp;lt;eplite id=&amp;quot;cc-conditions&amp;quot; show-chat=&amp;quot;false&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Creative-crowds-cc.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Welcome to CC, a shared server currently maintained by Simon, Manetta and Doriane from Rotterdam/Brussels. &lt;br /&gt;
&lt;br /&gt;
With CC we explore how community gathers around specific experimental publishing tools, how hosted tools can be prototyped for activist collectivities, and how we can question and participate in a discourse around practices and tools.&lt;br /&gt;
&lt;br /&gt;
CC is currently hosting the following things:&lt;br /&gt;
&lt;br /&gt;
* [https://cc.practices.tools/octomode/ octomode] is running&lt;br /&gt;
* [[Wiki-to-print|wiki-to-print]] is configured for use&lt;br /&gt;
* [https://cc.practices.tools/etherdot/ etherdot] is graphing&lt;br /&gt;
* [https://cc.practices.tools/pad/ pads]&lt;br /&gt;
* [https://cc.practices.tools/fonts/ fonts]&lt;br /&gt;
* [https://cc.practices.tools/traces/ traces]&lt;br /&gt;
* [[Cobbled-paths|cobbled paths]] (not yet)&lt;br /&gt;
* this wiki&lt;br /&gt;
&lt;br /&gt;
If you want, you can sign the &#039;&#039;&#039;collective calendar&#039;&#039;&#039; (on the right) as a way to collect server presences together. Under the calendar you can find the &#039;&#039;&#039;CC-collective conditions for use&#039;&#039;&#039; we formulated, which is something we consider to be in flux.&lt;br /&gt;
&lt;br /&gt;
You can write us at: [mailto:cc@practices.tools cc@practices.tools]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;columns:2;column-gap:5mm;column-fill:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==A recent change==&lt;br /&gt;
&lt;br /&gt;
[[File:So-you-decided-to-make-a-zine-in-octomode.pdf|200px|thumb|left|Zine made by Simon during the Des*gn Week in Linz, November 2025]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;display:block;border:0;background:linear-gradient(yellow,white);padding:0.5em;margin:1em 0 0.5em;border-radius:25px 0 0 0;&amp;quot;&amp;gt;CC currently hosts...&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==This wiki==&lt;br /&gt;
&lt;br /&gt;
We use this wiki as a working environment to produce publications with, organise the collective CC server maintenance work, and document things we do.&lt;br /&gt;
&lt;br /&gt;
==octomode==&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/octomode/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;more info&#039;&#039;&#039;: [[Octomode|octomode]] &amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/octomode&lt;br /&gt;
&lt;br /&gt;
Octomode is a collective editing space for PDF making, using Etherpad, Paged.js and Flask.&lt;br /&gt;
&lt;br /&gt;
The version installed on CC is open for use but it is password protected, reach out to us to ask for it, we share the password in an open ended network of trusted-peers and trusted-peers-of-peers.&lt;br /&gt;
&lt;br /&gt;
[[File:Rwx-octo5.svg|200px]]&lt;br /&gt;
[[File:Read-write-execute-octo-mode.png|200px]]&lt;br /&gt;
[[File:Octo-hands.png|200px]]&lt;br /&gt;
&lt;br /&gt;
==wiki-to-print==&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/wiki/Pdf:Unfolding&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;more info&#039;&#039;&#039;: [[wiki-to-print]] &amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;git repo&#039;&#039;&#039;: https://git.vvvvvvaria.org/CC/wiki-to-print&lt;br /&gt;
&lt;br /&gt;
Wiki-to-print is a collective publishing environment that hooks into wiki practices and cultures. It uses MediaWiki software, CCS Print rules and Paged.js, to render a preview of the PDF in the browser.&lt;br /&gt;
&lt;br /&gt;
The version installed on CC is internally used. But if you&#039;re curious to try it, let us know.&lt;br /&gt;
&lt;br /&gt;
[[File:Wiki-to-print.gv.svg|200px]]&lt;br /&gt;
&lt;br /&gt;
==pads==&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/pads/&lt;br /&gt;
&lt;br /&gt;
Pads on CC are open for use for things related to CC in some way.&lt;br /&gt;
&lt;br /&gt;
==fonts==&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/fonts/&amp;lt;br&amp;gt;&lt;br /&gt;
→ &#039;&#039;&#039;more info&#039;&#039;&#039;: [[Fonts]]&lt;br /&gt;
&lt;br /&gt;
We are hosting a very adhocly selected list of fonts to use them in web-to-print projects.&lt;br /&gt;
&lt;br /&gt;
==traces==&lt;br /&gt;
&lt;br /&gt;
→  &#039;&#039;&#039;URL&#039;&#039;&#039;: https://cc.practices.tools/traces/&lt;br /&gt;
&lt;br /&gt;
Here we collect traces of our practices crossing with CC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5532</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5532"/>
		<updated>2026-02-22T16:57:30Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates with the old filename that are still being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
1. go inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt; and download the files (make backups first)&lt;br /&gt;
&lt;br /&gt;
 $ curl https://unpkg.com/pagedjs@0.4.3/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
 $ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&lt;br /&gt;
2. change ownership to the www-data user&lt;br /&gt;
&lt;br /&gt;
 $ chown www-data:www-data paged.polyfill.js&lt;br /&gt;
 $ chown www-data:www-data interface.css&lt;br /&gt;
&lt;br /&gt;
3. go inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt; and edit the template &amp;lt;code&amp;gt;pagedjs.html&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ sudo nano pagedjs.html&lt;br /&gt;
&lt;br /&gt;
4. Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=CC_to_do_list&amp;diff=5531</id>
		<title>CC to do list</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=CC_to_do_list&amp;diff=5531"/>
		<updated>2026-02-21T14:37:24Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==A list of things to do==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;change email address associated with OVH (currently it&#039;s info@varia.zone)&amp;lt;/s&amp;gt;&lt;br /&gt;
** check if OVH offers backups, or makes one full disk copy with vorta/borg (manetta)&lt;br /&gt;
* &amp;lt;s&amp;gt;make servus account (manetta)&amp;lt;/s&amp;gt; -- paid first invoice (apr+may+jun = €90) on 13/06 (mb)&lt;br /&gt;
* &amp;lt;s&amp;gt;check our money status at Varia (simon)&amp;lt;/s&amp;gt;&lt;br /&gt;
* send email to CC users that we know with a hello and backup reminder&lt;br /&gt;
* &amp;lt;s&amp;gt;pay Manetta 566.69&amp;lt;/s&amp;gt; (simon)&lt;br /&gt;
* &amp;lt;s&amp;gt;checking Stimu application digital culture (simon)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;invoice varia for content/form (manetta)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;move octomode git to CC group on varia git (manetta)&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Server things==&lt;br /&gt;
&lt;br /&gt;
* check backup situation again&lt;br /&gt;
* check if certbot cronjob works&lt;br /&gt;
* check if ssh root login works&lt;br /&gt;
* think about the etherpad database: do we want to delete history of pads to keep the size of the database under 1GB? (currently 942MB, Jan 2026) or think of a way in which pads can be deleted?&lt;br /&gt;
&lt;br /&gt;
==Things to pick up, a collected list during our residency in Linz==&lt;br /&gt;
&lt;br /&gt;
* [[Finances]]&lt;br /&gt;
** updating the wiki page on what we have spent (lol this is just about Servpub https://cc.practices.tools/wiki/Docum%E2%82%ACntation)&lt;br /&gt;
* continue research question articulation of CC&lt;br /&gt;
** feedback session?&lt;br /&gt;
** how to invite crowd(s)&lt;br /&gt;
** who do we invite directly?&lt;br /&gt;
* things we want to install on the server&lt;br /&gt;
* r/w/x/o ctomode writing&lt;br /&gt;
** could be joined with &amp;quot;so, you decided...&amp;quot;&lt;br /&gt;
* how public/open should the CC wiki be?&lt;br /&gt;
* octomode work&lt;br /&gt;
** welcome page&lt;br /&gt;
** documentation&lt;br /&gt;
** editing of octomode wiki page&lt;br /&gt;
* CC git where?&lt;br /&gt;
* publish interview with Femke and Pierre&lt;br /&gt;
* &amp;lt;s&amp;gt;edit etherpad default text !!!&amp;lt;/s&amp;gt; (done 3 Dec, manetta)&lt;br /&gt;
* so, you decided... zine: how to extend the last few pages for more context, making it open-ended (for another time)&lt;br /&gt;
* document Des*gn Week workshop + zine that we made&lt;br /&gt;
&lt;br /&gt;
==For later==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;send email to Varia about transfer of git repo&amp;lt;/s&amp;gt; (not needed in the end i think, danny knows)&lt;br /&gt;
* move box with many Content/Form copies from XPUB to elsewhere&lt;br /&gt;
* move the wiki to another location in the server&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5530</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5530"/>
		<updated>2026-02-21T14:34:57Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates with the old filename that are still being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
1. go inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt; and download the files (make backups first)&lt;br /&gt;
&lt;br /&gt;
 $ curl https://unpkg.com/pagedjs@0.4.3/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
 $ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&lt;br /&gt;
2. change ownership to the www-data user&lt;br /&gt;
&lt;br /&gt;
 $ chown www-data:www-data paged.polyfill.js&lt;br /&gt;
 $ chown www-data:www-data interface.css&lt;br /&gt;
&lt;br /&gt;
3. go inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ sudo nano pagedjs.html&lt;br /&gt;
&lt;br /&gt;
4. Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5529</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5529"/>
		<updated>2026-02-21T14:34:14Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates with the old filename that are still being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
1. go inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt; and download the files (make backups first)&lt;br /&gt;
&lt;br /&gt;
 $ curl https://unpkg.com/pagedjs@0.4.3/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
 $ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&lt;br /&gt;
2. change ownership to the www-data user&lt;br /&gt;
&lt;br /&gt;
 $ chown www-data:www-data paged.polyfill.js&lt;br /&gt;
 $ chown www-data:www-data interface.css&lt;br /&gt;
&lt;br /&gt;
3. go inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ sudo nano pagedjs.html&lt;br /&gt;
&lt;br /&gt;
4. Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5528</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5528"/>
		<updated>2026-02-21T14:33:31Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates with the old filename that are still being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
1. go inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ curl https://unpkg.com/pagedjs@0.4.3/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
 $ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&lt;br /&gt;
2. change ownership to the www-data user&lt;br /&gt;
&lt;br /&gt;
 $ chown www-data:www-data paged.polyfill.js&lt;br /&gt;
 $ chown www-data:www-data interface.css&lt;br /&gt;
&lt;br /&gt;
3. go inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ sudo nano pagedjs.html&lt;br /&gt;
&lt;br /&gt;
4. Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5527</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5527"/>
		<updated>2026-02-21T14:32:31Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
1. go inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ curl https://unpkg.com/pagedjs@0.4.3/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
 $ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&lt;br /&gt;
2. change ownership to the www-data user&lt;br /&gt;
&lt;br /&gt;
 $ chown www-data:www-data paged.polyfill.js&lt;br /&gt;
 $ chown www-data:www-data interface.css&lt;br /&gt;
&lt;br /&gt;
3. go inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ sudo nano pagedjs.html&lt;br /&gt;
&lt;br /&gt;
4. Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5526</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5526"/>
		<updated>2026-02-21T14:31:50Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
1. go inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ curl https://unpkg.com/pagedjs@0.4.3/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. change ownership to the www-data user&lt;br /&gt;
&lt;br /&gt;
$ chown www-data:www-data paged.polyfill.js&lt;br /&gt;
$ chown www-data:www-data interface.css&lt;br /&gt;
&lt;br /&gt;
3. go inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5525</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5525"/>
		<updated>2026-02-21T14:26:32Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
1. go inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ curl https://unpkg.com/pagedjs@0.4.3/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. change ownership to the www-data user&lt;br /&gt;
&lt;br /&gt;
$ chown www-data:www-data paged.polyfill.js&lt;br /&gt;
$ chown www-data:www-data interface.css&lt;br /&gt;
&lt;br /&gt;
3. go inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5524</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5524"/>
		<updated>2026-02-21T14:14:49Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
install curl&lt;br /&gt;
switch the the www-data user, which owns the files&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ curl https://app.unpkg.com/pagedjs@0.4.3/files/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5523</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5523"/>
		<updated>2026-02-21T14:10:21Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/paged.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;paged.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ curl https://app.unpkg.com/pagedjs@0.4.3/files/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5522</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5522"/>
		<updated>2026-02-21T14:10:01Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;pagedjs.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ curl https://app.unpkg.com/pagedjs@0.4.3/files/dist/paged.polyfill.js &amp;gt; paged.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5521</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5521"/>
		<updated>2026-02-21T14:06:35Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;pagedjs.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ curl https://app.unpkg.com/pagedjs@0.4.3/files/dist/paged.polyfill.js &amp;gt; pagedjs.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5520</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5520"/>
		<updated>2026-02-21T14:06:14Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;pagedjs.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ curl https://app.unpkg.com/pagedjs@0.4.3/files/dist/paged.polyfill.js &amp;gt; pagedjs.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5519</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5519"/>
		<updated>2026-02-21T14:05:27Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;pagedjs.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ curl https://app.unpkg.com/pagedjs@0.4.3/files/dist/paged.polyfill.js &amp;gt; pagedjs.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5518</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5518"/>
		<updated>2026-02-21T14:04:10Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;pagedjs.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ curl https://app.unpkg.com/pagedjs@0.4.3/files/dist/paged.polyfill.js &amp;gt; pagedjs.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5517</id>
		<title>Upgrading pagedjs</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Upgrading_pagedjs&amp;diff=5517"/>
		<updated>2026-02-21T14:03:25Z</updated>

		<summary type="html">&lt;p&gt;Simoon: Created page with &amp;quot;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.  From today, we will upgrade the version to the latest stable version, 0.4.3.  Octomode depends on two files that should be changed with the upgrade.  * /opt/octomode/static/pagedjs.polyfill.js (v0.1.43) * /opt/octomode/static/pagedjs.css (v0.2.0)  These should be upgraded to   * /opt/octomode/static/pagedjs.polyfill.js (v0.4.3) * /opt/octomode/static/interface.css (v0.4)  Th...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Up until today (February 21st, 2026), the version of pagedjs that Octomode depends on is 0.1.43.&lt;br /&gt;
&lt;br /&gt;
From today, we will upgrade the version to the latest stable version, 0.4.3.&lt;br /&gt;
&lt;br /&gt;
Octomode depends on two files that should be changed with the upgrade.&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.1.43)&lt;br /&gt;
* /opt/octomode/static/pagedjs.css (v0.2.0)&lt;br /&gt;
&lt;br /&gt;
These should be upgraded to &lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/pagedjs.polyfill.js (v0.4.3)&lt;br /&gt;
* /opt/octomode/static/interface.css (v0.4)&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;pagedjs.polyfill.js&amp;lt;/code&amp;gt; can be overwritten, but as the CSS has a different filename, we should also update any templates that are being used by Octomode:&lt;br /&gt;
&lt;br /&gt;
* /opt/octomode/static/templates/pagedjs.html&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ curl https://app.unpkg.com/pagedjs@0.4.3/files/dist/paged.polyfill.js &amp;gt; pagedjs.polyfill.js&lt;br /&gt;
$ curl https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css?ref_type=heads &amp;gt; interface.css&lt;br /&gt;
&lt;br /&gt;
inside &amp;lt;code&amp;gt;/opt/octomode/static/templates&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ sudo nano pagedjs.html&lt;br /&gt;
&lt;br /&gt;
Replace the text &amp;quot;pagedjs.css&amp;quot; with &amp;quot;interface.css&amp;quot;. Changing it from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;pagedjs.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ lang }}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;paged.polyfill.js&#039;) }}&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&#039;static&#039;, filename=&#039;interface.css&#039;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- [LOCAL HACK] mb: added /octomode/ below to make the stylesheet link work again. --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;/octomode/{{ name }}/stylesheet.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    {{ pad_content }}&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: upgrade pagedjs for wiki-to-print, which is a separate installation of pagedjs.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5516</id>
		<title>Error log</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5516"/>
		<updated>2026-02-13T10:53:05Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Left-justifying a last line in a full justified paragraph */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents (some of) the quirks of using free/libre open-source software to make graphic design &#039;&#039;in Octomode&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are all Paged.js related atm.&lt;br /&gt;
&lt;br /&gt;
== Left-justifying a last line in a full justified paragraph ==&lt;br /&gt;
&lt;br /&gt;
=== the problem ===&lt;br /&gt;
At OSP we (Simon &amp;amp; Clara) are designing a novel in Octomode. The text is full justified throughout, with text indentations before each paragraph, and a mix of line breaks and paragraph breaks. But the last sentence of the paragraph is also full justified, because there is a &amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt; that makes the paragraph break. You could drive a truck through those word spaces.&lt;br /&gt;
&lt;br /&gt;
[[File:you-could-drive-a-truck-through-those-wordspaces.png|thumb|400px|Last line is also full justified :sadface:]]&lt;br /&gt;
&lt;br /&gt;
=== the solution ===&lt;br /&gt;
Lazy method: add a whole heap of non-breaking spaces into the content&amp;lt;nowiki&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:non-breaking-spaces-hack.png|thumb|400px|packing a bunch of non-breaking spaces]]&lt;br /&gt;
&lt;br /&gt;
=== the result ===&lt;br /&gt;
Voila! The last line is now left-justified. There must be a more elegant way to do this, but we go to print in 2 days (!)&lt;br /&gt;
&lt;br /&gt;
[[File:last-line-full-justified.png|thumb|400px|hackity hack works!]]&lt;br /&gt;
&lt;br /&gt;
== An unexpected column jump ==&lt;br /&gt;
[[File:firefox-image-cutoff.png|thumb|Images cut off in PDF exported from Firefox]]&lt;br /&gt;
[[File:column-jump-issue.png|thumb|The automagical column jump]]&lt;br /&gt;
&lt;br /&gt;
=== The situation ===&lt;br /&gt;
The intention was to make a multi-page report, which has a cover page and text flowing across two columns, beginning on page 2. The document was made using the Firefox browser over the course of a week or so. Everything looked great, until the PDF was exported, which showed images breaking across columns. Strange, as this was not how it appeared in the PDF as it was rendered in the browser.&lt;br /&gt;
&lt;br /&gt;
So, the switch was made to Chrome, which was recommended as a more stable browser to work with. But in Chrome, there was an entirely different issue. On page 2, the text did not flow across two columns. Instead, it jumped from the left-hand column on page 2, to page 3.&lt;br /&gt;
&lt;br /&gt;
=== Inspecting... ===&lt;br /&gt;
In the CSS, the property and values &amp;lt;code&amp;gt;columns: 2 auto;&amp;lt;/code&amp;gt; were previously applied to a class called &amp;lt;code&amp;gt;.columns&amp;lt;/code&amp;gt;. In the pad, this class had also been added on page 2, like so: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When inspecting the elements, it appeared that the &amp;lt;code&amp;gt;&amp;lt;section&amp;gt;&amp;lt;/code&amp;gt; tag had been closed at the end of the first column automagically. So, the text did not flow to the second column, as the browser thought this was the end of the section?&lt;br /&gt;
&lt;br /&gt;
=== Resolution ===&lt;br /&gt;
After much searching online, gnashing of teeth and hand-wringing, the issue was solved by adding &amp;lt;code&amp;gt;&amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; to the cover (page 1), then a bunch of break tags: &amp;lt;pre&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This pushed the text down to page 2, where it flowed across both columns, as originally intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disappearing sentences ==&lt;br /&gt;
&lt;br /&gt;
Since OSP has been working on [http://diversions.constantvzw.org/ DiVersions] in 2020, which is made with Paged.js, stories of disappearing sentences on page breaks have been circulating in the web-to-print networks-of-networks. It also emerged in the context of making [https://volumetricregimes.xyz/index.php?title=Main_Page Volumetric Regimes]. &lt;br /&gt;
&lt;br /&gt;
Below is a log of messages and exchanges on the Mattermost instance of Coko around this issue. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all, hope you are well! A couple of months ago i have been hanging around here (or actually in the other chat instance before the move to this one) to learn about paged.js as i was working on a 300+ pages book. It has been my first bigger project made with paged.js and it has been an amazing learning curve! The making of the book has been on hold for a while and i’m picking it up again these days, but unfortunately a mysterious problem suddenly appeared again: sentences are “eaten” and thus disappearing at the bottom of pages. I had bumped into this in the very beginning of the project too, and @julien was so nice to talk me through possible things that could have caused it. We talked about documenting this in some way, as i have heard stories of designers around me who also bumped into this and said how much anxiety it gives them to not understand when or why sentences disappear. Specially when they work with deadlines, this can easily create all-nighters to make sure that a PDF can be send to print on time. We did not find the time to talk and document it at the end of 2021, but since i’m bumping into this problem again now, and it feels interesting and relevant to document this, i was wondering if @julien or someone else would be up for a short conversation somewhere next week to chat about it?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: About the missing sentence in the 342 pages book (Volumetric Regimes): &lt;br /&gt;
&lt;br /&gt;
* i checked the zoom, the browser is at 100% &lt;br /&gt;
* all my sizes are in px, including the baseline and top and bottom margins of the page, to avoid the rounding issue &lt;br /&gt;
* when i turn Hyphenology off, the issue disappears&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I tried again to tweak the page margins, but without success. If i make them smaller, the missing line reappears, but … the next one is missing.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I feel quite desperate now… don’t know what to do anymore, the “hack” of this afternoon (working with the CTRL+S saved copy) messes up the text flow, … which leaves me out of options to try other things or find other hack-ish ways to send this file to print :slightly_frowning_face:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: It turns out that without Hyphenology everything is oke, but we need Hyphenology for the hyphenation of the book… Did you encounter this missing sentences bug before by any chance, in combination with Hyphenology? Is there anything i can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Meanwhile…. i am back at my 342 pages book project, we are sending it to print, but unfortunately the missing sentences bug reappeared……&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey Julien, hope you are well! I wanted to let you know that the missing sentences problem strangely enough suddenly disappeared again. The PDF renders oke now, and i’m crossing fingers for it to stay like this!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hello all! I&#039;m writing with a question around the mystery of sentences disappearing on page breaks... It appeared again, while making a 1st of May anarchist newspaper in Varia. I&#039;m not working on it myself, but it made me curious to check in here and ask what the current status is around these haunting moments? &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there. i think we had some interesting experiments with @harshna, it seems that when you have some element with a subpixel height, the rounding/conversion seems to break things. Do you have anything set using em? to explain quickly: on screen, chrome will consider that 8.8px is equal to 8px (6pt). but when it puts the same content on the paper, it consider that 8.8px = 6.6pt. The amount of content it can add on screen is a bit different than what you have on paper. But since paged,js already made the break between pages. the content moves a little bit. &lt;br /&gt;
&lt;br /&gt;
I have an idea to test later with @harshna so we could come with a more usable solution (i hope)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Thanks so much for the reply, will forward this to the others at Varia who were making the newspaper! And would you recommend to work in pixels or in points? I think I asked you this before... but i can&#039;t find my notes back :confused:...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: pixel. because the screen is used to draw the pages first. (we’re exploring options to change a bit how pagedjs do the conversion but it’s not really that simple)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: Hmmmm, yeh, it doesn&#039;t seem to be working. I&#039;m only working with px now across the entire stylesheet&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: things are getting dissapeared on the page breaks between columns (image 1: pdf view image 2: print preview) &lt;br /&gt;
&lt;br /&gt;
[[File:Missing-sentences-decentral1se-1.png|300px]] [[File:Missing-sentences-decentral1se-2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: there is also a report about 2 column layout doing strange things so i might try 3 column layout :thinking_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: I agree its still breaking in some places. Its not only about 2 column layout, we tried with single column layout and it has missing lines too. We are working on a fix for that now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: aha ok, cool! thanks for the efforts :star2: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: happy to test stuff if that helps&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: it would be great if you could report abnormalities/ any patterns that you find&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: thank you&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: @decentral1se do you have any footnotes?&lt;br /&gt;
&lt;br /&gt;
we may have found a way to hack our way out of those weird rounding issues.&lt;br /&gt;
&lt;br /&gt;
by adding and then removing some emtpy space.&lt;br /&gt;
&lt;br /&gt;
(a hack,really}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: no footnotes, some text in @page:first { @top-left { content: &amp;quot;...&amp;quot;; ... and page numbers tho. Everythings in https://octomode.vvvvvvaria.org/anarcho-krant-mvp-issue-1/stylesheet/ (DM me for username/password).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: curious about the hack :nerd_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: ok so, the idea is to leverage the footnote space by giving it some empty space, and run a hook to remove that space just before printing.&lt;br /&gt;
&lt;br /&gt;
really, a hack&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class fixMissingLine extends Paged.Handler {&lt;br /&gt;
  constructor(chunker, polisher, caller) {&lt;br /&gt;
    super(chunker, polisher, caller);&lt;br /&gt;
    this.moveToParentFig = [];&lt;br /&gt;
  }&lt;br /&gt;
  afterRendered(pages) {&lt;br /&gt;
    document.querySelectorAll(&#039;.pagedjs_sheet&#039;).forEach(sheet =&amp;gt; sheet.style.setProperty(&#039;--pagedjs-footnotes-height&#039;, &#039;0px&#039;))&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
Paged.registerHandlers(fixMissingLine);&lt;br /&gt;
&lt;br /&gt;
and add to your css:&lt;br /&gt;
.pagedjs_sheet {&lt;br /&gt;
--pagedjs-footnotes-height: 12px&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i hope the children never learn we did such a trick.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: it&#039;s hacks all the way down :smile_cat: &lt;br /&gt;
&lt;br /&gt;
i will see about integrating this into octomode to test&lt;br /&gt;
&lt;br /&gt;
have you had some luck testing this already? &lt;br /&gt;
&lt;br /&gt;
oh hmm if i don&#039;t already have footnotes, then i can&#039;t use this? :thinking_face:  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: yep you can &lt;br /&gt;
&lt;br /&gt;
and yes we tried.&lt;br /&gt;
&lt;br /&gt;
it’s completely untested and quite dangerous but hey, who wants to live a long and nice and peaceful life right? :sunglasses: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: haha lovely stuff, will try tmoz, thx!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
===Links===&lt;br /&gt;
&lt;br /&gt;
* https://git.vvvvvvaria.org/varia/octomode/issues/25&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/130&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87#issuecomment-1476958035&lt;br /&gt;
&lt;br /&gt;
==Differences in PDF renderings in Mac/Linux==&lt;br /&gt;
&lt;br /&gt;
https://mattermost.coko.foundation/coko/pl/6jdgxiybridq5bg4scx63tirgh&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-page-77-78-mb.png|thumb|right|screenshot on Linux]] &lt;br /&gt;
[[File:Screenshot-page-77-78-simon-sm.png|thumb|right|screenshot on Mac]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all! Hope you are having a lovely summer.  @simoon and i&#039;re slowly picking up work again in Rotterdam and are wrapping up a remake of the APRJA journal, which is now produced with Paged.js. :wink:&lt;br /&gt;
&lt;br /&gt;
While going to the list of last changes, we noticed that Paged.js renders the pages differently on a Mac and Linux computer, even though we are on the exact same version of Chrome  :grimacing:.&lt;br /&gt;
Have you noticed that before? Is there anything we can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there!&lt;br /&gt;
yeah it’s one of those thing we can’t really do anything about because it’s about mac and linux use their fonts.&lt;br /&gt;
&lt;br /&gt;
so for example. hypens have been available on mac for much longer than for linux :confused:&lt;br /&gt;
&lt;br /&gt;
The only workaround is by using pagedjs-cli on a server, which comes with the problem of having a hardest time to make small changes.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5515</id>
		<title>Error log</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5515"/>
		<updated>2026-02-13T10:29:58Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Left-justifying a last line in a full justified paragraph */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents (some of) the quirks of using free/libre open-source software to make graphic design &#039;&#039;in Octomode&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are all Paged.js related atm.&lt;br /&gt;
&lt;br /&gt;
== Left-justifying a last line in a full justified paragraph ==&lt;br /&gt;
&lt;br /&gt;
=== the problem ===&lt;br /&gt;
The text is full justified throughout, with text indentations before each paragraph, and a mix of line breaks and paragraph breaks. But the last sentence of the paragraph is also full justified, because there is a &amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt; that makes the paragraph break. You could drive a truck through those word spaces.&lt;br /&gt;
&lt;br /&gt;
[[File:you-could-drive-a-truck-through-those-wordspaces.png|thumb|400px|Last line is also full justified :sadface:]]&lt;br /&gt;
&lt;br /&gt;
=== the solution ===&lt;br /&gt;
Lazy method: add a whole heap of non-breaking spaces into the content&amp;lt;nowiki&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:non-breaking-spaces-hack.png|thumb|400px|packing a bunch of non-breaking spaces]]&lt;br /&gt;
&lt;br /&gt;
=== the result ===&lt;br /&gt;
Voila! The last line is now left-justified. There must be a more elegant way to do this, but we go to print in 2 days (!)&lt;br /&gt;
&lt;br /&gt;
[[File:last-line-full-justified.png|thumb|400px|hackity hack works!]]&lt;br /&gt;
&lt;br /&gt;
== An unexpected column jump ==&lt;br /&gt;
[[File:firefox-image-cutoff.png|thumb|Images cut off in PDF exported from Firefox]]&lt;br /&gt;
[[File:column-jump-issue.png|thumb|The automagical column jump]]&lt;br /&gt;
&lt;br /&gt;
=== The situation ===&lt;br /&gt;
The intention was to make a multi-page report, which has a cover page and text flowing across two columns, beginning on page 2. The document was made using the Firefox browser over the course of a week or so. Everything looked great, until the PDF was exported, which showed images breaking across columns. Strange, as this was not how it appeared in the PDF as it was rendered in the browser.&lt;br /&gt;
&lt;br /&gt;
So, the switch was made to Chrome, which was recommended as a more stable browser to work with. But in Chrome, there was an entirely different issue. On page 2, the text did not flow across two columns. Instead, it jumped from the left-hand column on page 2, to page 3.&lt;br /&gt;
&lt;br /&gt;
=== Inspecting... ===&lt;br /&gt;
In the CSS, the property and values &amp;lt;code&amp;gt;columns: 2 auto;&amp;lt;/code&amp;gt; were previously applied to a class called &amp;lt;code&amp;gt;.columns&amp;lt;/code&amp;gt;. In the pad, this class had also been added on page 2, like so: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When inspecting the elements, it appeared that the &amp;lt;code&amp;gt;&amp;lt;section&amp;gt;&amp;lt;/code&amp;gt; tag had been closed at the end of the first column automagically. So, the text did not flow to the second column, as the browser thought this was the end of the section?&lt;br /&gt;
&lt;br /&gt;
=== Resolution ===&lt;br /&gt;
After much searching online, gnashing of teeth and hand-wringing, the issue was solved by adding &amp;lt;code&amp;gt;&amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; to the cover (page 1), then a bunch of break tags: &amp;lt;pre&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This pushed the text down to page 2, where it flowed across both columns, as originally intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disappearing sentences ==&lt;br /&gt;
&lt;br /&gt;
Since OSP has been working on [http://diversions.constantvzw.org/ DiVersions] in 2020, which is made with Paged.js, stories of disappearing sentences on page breaks have been circulating in the web-to-print networks-of-networks. It also emerged in the context of making [https://volumetricregimes.xyz/index.php?title=Main_Page Volumetric Regimes]. &lt;br /&gt;
&lt;br /&gt;
Below is a log of messages and exchanges on the Mattermost instance of Coko around this issue. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all, hope you are well! A couple of months ago i have been hanging around here (or actually in the other chat instance before the move to this one) to learn about paged.js as i was working on a 300+ pages book. It has been my first bigger project made with paged.js and it has been an amazing learning curve! The making of the book has been on hold for a while and i’m picking it up again these days, but unfortunately a mysterious problem suddenly appeared again: sentences are “eaten” and thus disappearing at the bottom of pages. I had bumped into this in the very beginning of the project too, and @julien was so nice to talk me through possible things that could have caused it. We talked about documenting this in some way, as i have heard stories of designers around me who also bumped into this and said how much anxiety it gives them to not understand when or why sentences disappear. Specially when they work with deadlines, this can easily create all-nighters to make sure that a PDF can be send to print on time. We did not find the time to talk and document it at the end of 2021, but since i’m bumping into this problem again now, and it feels interesting and relevant to document this, i was wondering if @julien or someone else would be up for a short conversation somewhere next week to chat about it?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: About the missing sentence in the 342 pages book (Volumetric Regimes): &lt;br /&gt;
&lt;br /&gt;
* i checked the zoom, the browser is at 100% &lt;br /&gt;
* all my sizes are in px, including the baseline and top and bottom margins of the page, to avoid the rounding issue &lt;br /&gt;
* when i turn Hyphenology off, the issue disappears&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I tried again to tweak the page margins, but without success. If i make them smaller, the missing line reappears, but … the next one is missing.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I feel quite desperate now… don’t know what to do anymore, the “hack” of this afternoon (working with the CTRL+S saved copy) messes up the text flow, … which leaves me out of options to try other things or find other hack-ish ways to send this file to print :slightly_frowning_face:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: It turns out that without Hyphenology everything is oke, but we need Hyphenology for the hyphenation of the book… Did you encounter this missing sentences bug before by any chance, in combination with Hyphenology? Is there anything i can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Meanwhile…. i am back at my 342 pages book project, we are sending it to print, but unfortunately the missing sentences bug reappeared……&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey Julien, hope you are well! I wanted to let you know that the missing sentences problem strangely enough suddenly disappeared again. The PDF renders oke now, and i’m crossing fingers for it to stay like this!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hello all! I&#039;m writing with a question around the mystery of sentences disappearing on page breaks... It appeared again, while making a 1st of May anarchist newspaper in Varia. I&#039;m not working on it myself, but it made me curious to check in here and ask what the current status is around these haunting moments? &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there. i think we had some interesting experiments with @harshna, it seems that when you have some element with a subpixel height, the rounding/conversion seems to break things. Do you have anything set using em? to explain quickly: on screen, chrome will consider that 8.8px is equal to 8px (6pt). but when it puts the same content on the paper, it consider that 8.8px = 6.6pt. The amount of content it can add on screen is a bit different than what you have on paper. But since paged,js already made the break between pages. the content moves a little bit. &lt;br /&gt;
&lt;br /&gt;
I have an idea to test later with @harshna so we could come with a more usable solution (i hope)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Thanks so much for the reply, will forward this to the others at Varia who were making the newspaper! And would you recommend to work in pixels or in points? I think I asked you this before... but i can&#039;t find my notes back :confused:...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: pixel. because the screen is used to draw the pages first. (we’re exploring options to change a bit how pagedjs do the conversion but it’s not really that simple)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: Hmmmm, yeh, it doesn&#039;t seem to be working. I&#039;m only working with px now across the entire stylesheet&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: things are getting dissapeared on the page breaks between columns (image 1: pdf view image 2: print preview) &lt;br /&gt;
&lt;br /&gt;
[[File:Missing-sentences-decentral1se-1.png|300px]] [[File:Missing-sentences-decentral1se-2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: there is also a report about 2 column layout doing strange things so i might try 3 column layout :thinking_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: I agree its still breaking in some places. Its not only about 2 column layout, we tried with single column layout and it has missing lines too. We are working on a fix for that now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: aha ok, cool! thanks for the efforts :star2: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: happy to test stuff if that helps&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: it would be great if you could report abnormalities/ any patterns that you find&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: thank you&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: @decentral1se do you have any footnotes?&lt;br /&gt;
&lt;br /&gt;
we may have found a way to hack our way out of those weird rounding issues.&lt;br /&gt;
&lt;br /&gt;
by adding and then removing some emtpy space.&lt;br /&gt;
&lt;br /&gt;
(a hack,really}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: no footnotes, some text in @page:first { @top-left { content: &amp;quot;...&amp;quot;; ... and page numbers tho. Everythings in https://octomode.vvvvvvaria.org/anarcho-krant-mvp-issue-1/stylesheet/ (DM me for username/password).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: curious about the hack :nerd_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: ok so, the idea is to leverage the footnote space by giving it some empty space, and run a hook to remove that space just before printing.&lt;br /&gt;
&lt;br /&gt;
really, a hack&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class fixMissingLine extends Paged.Handler {&lt;br /&gt;
  constructor(chunker, polisher, caller) {&lt;br /&gt;
    super(chunker, polisher, caller);&lt;br /&gt;
    this.moveToParentFig = [];&lt;br /&gt;
  }&lt;br /&gt;
  afterRendered(pages) {&lt;br /&gt;
    document.querySelectorAll(&#039;.pagedjs_sheet&#039;).forEach(sheet =&amp;gt; sheet.style.setProperty(&#039;--pagedjs-footnotes-height&#039;, &#039;0px&#039;))&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
Paged.registerHandlers(fixMissingLine);&lt;br /&gt;
&lt;br /&gt;
and add to your css:&lt;br /&gt;
.pagedjs_sheet {&lt;br /&gt;
--pagedjs-footnotes-height: 12px&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i hope the children never learn we did such a trick.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: it&#039;s hacks all the way down :smile_cat: &lt;br /&gt;
&lt;br /&gt;
i will see about integrating this into octomode to test&lt;br /&gt;
&lt;br /&gt;
have you had some luck testing this already? &lt;br /&gt;
&lt;br /&gt;
oh hmm if i don&#039;t already have footnotes, then i can&#039;t use this? :thinking_face:  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: yep you can &lt;br /&gt;
&lt;br /&gt;
and yes we tried.&lt;br /&gt;
&lt;br /&gt;
it’s completely untested and quite dangerous but hey, who wants to live a long and nice and peaceful life right? :sunglasses: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: haha lovely stuff, will try tmoz, thx!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
===Links===&lt;br /&gt;
&lt;br /&gt;
* https://git.vvvvvvaria.org/varia/octomode/issues/25&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/130&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87#issuecomment-1476958035&lt;br /&gt;
&lt;br /&gt;
==Differences in PDF renderings in Mac/Linux==&lt;br /&gt;
&lt;br /&gt;
https://mattermost.coko.foundation/coko/pl/6jdgxiybridq5bg4scx63tirgh&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-page-77-78-mb.png|thumb|right|screenshot on Linux]] &lt;br /&gt;
[[File:Screenshot-page-77-78-simon-sm.png|thumb|right|screenshot on Mac]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all! Hope you are having a lovely summer.  @simoon and i&#039;re slowly picking up work again in Rotterdam and are wrapping up a remake of the APRJA journal, which is now produced with Paged.js. :wink:&lt;br /&gt;
&lt;br /&gt;
While going to the list of last changes, we noticed that Paged.js renders the pages differently on a Mac and Linux computer, even though we are on the exact same version of Chrome  :grimacing:.&lt;br /&gt;
Have you noticed that before? Is there anything we can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there!&lt;br /&gt;
yeah it’s one of those thing we can’t really do anything about because it’s about mac and linux use their fonts.&lt;br /&gt;
&lt;br /&gt;
so for example. hypens have been available on mac for much longer than for linux :confused:&lt;br /&gt;
&lt;br /&gt;
The only workaround is by using pagedjs-cli on a server, which comes with the problem of having a hardest time to make small changes.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=File:Last-line-full-justified.png&amp;diff=5514</id>
		<title>File:Last-line-full-justified.png</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=File:Last-line-full-justified.png&amp;diff=5514"/>
		<updated>2026-02-13T10:27:28Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=File:Non-breaking-spaces-hack.png&amp;diff=5513</id>
		<title>File:Non-breaking-spaces-hack.png</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=File:Non-breaking-spaces-hack.png&amp;diff=5513"/>
		<updated>2026-02-13T10:27:09Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=File:You-could-drive-a-truck-through-those-wordspaces.png&amp;diff=5512</id>
		<title>File:You-could-drive-a-truck-through-those-wordspaces.png</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=File:You-could-drive-a-truck-through-those-wordspaces.png&amp;diff=5512"/>
		<updated>2026-02-13T10:26:42Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5511</id>
		<title>Error log</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5511"/>
		<updated>2026-02-13T10:26:20Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Left-justifying a last line in a full justified paragraph */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents (some of) the quirks of using free/libre open-source software to make graphic design &#039;&#039;in Octomode&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are all Paged.js related atm.&lt;br /&gt;
&lt;br /&gt;
== Left-justifying a last line in a full justified paragraph ==&lt;br /&gt;
&lt;br /&gt;
=== the problem ===&lt;br /&gt;
The text is full justified throughout, with text indentations before each paragraph, and a mix of line breaks and paragraph breaks. But the last sentence of the paragraph is also full justified, because there is a &amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt; that makes the paragraph break. You could drive a truck through those word spaces.&lt;br /&gt;
&lt;br /&gt;
[[File:you-could-drive-a-truck-through-those-wordspaces.png|thumb|Last line is also full justified :sadface:]]&lt;br /&gt;
&lt;br /&gt;
=== the solution ===&lt;br /&gt;
Lazy method: add a whole heap of non-breaking spaces into the content&amp;lt;nowiki&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:non-breaking-spaces-hack.png|thumb|packing a bunch of non-breaking spaces]]&lt;br /&gt;
&lt;br /&gt;
=== the result ===&lt;br /&gt;
Voila! The last line is now left-justified. There must be a more elegant way to do this, but we go to print in 2 days (!)&lt;br /&gt;
&lt;br /&gt;
[[File:last-line-full-justified.png|thumb|hackity hack works!]]&lt;br /&gt;
&lt;br /&gt;
== An unexpected column jump ==&lt;br /&gt;
[[File:firefox-image-cutoff.png|thumb|Images cut off in PDF exported from Firefox]]&lt;br /&gt;
[[File:column-jump-issue.png|thumb|The automagical column jump]]&lt;br /&gt;
&lt;br /&gt;
=== The situation ===&lt;br /&gt;
The intention was to make a multi-page report, which has a cover page and text flowing across two columns, beginning on page 2. The document was made using the Firefox browser over the course of a week or so. Everything looked great, until the PDF was exported, which showed images breaking across columns. Strange, as this was not how it appeared in the PDF as it was rendered in the browser.&lt;br /&gt;
&lt;br /&gt;
So, the switch was made to Chrome, which was recommended as a more stable browser to work with. But in Chrome, there was an entirely different issue. On page 2, the text did not flow across two columns. Instead, it jumped from the left-hand column on page 2, to page 3.&lt;br /&gt;
&lt;br /&gt;
=== Inspecting... ===&lt;br /&gt;
In the CSS, the property and values &amp;lt;code&amp;gt;columns: 2 auto;&amp;lt;/code&amp;gt; were previously applied to a class called &amp;lt;code&amp;gt;.columns&amp;lt;/code&amp;gt;. In the pad, this class had also been added on page 2, like so: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When inspecting the elements, it appeared that the &amp;lt;code&amp;gt;&amp;lt;section&amp;gt;&amp;lt;/code&amp;gt; tag had been closed at the end of the first column automagically. So, the text did not flow to the second column, as the browser thought this was the end of the section?&lt;br /&gt;
&lt;br /&gt;
=== Resolution ===&lt;br /&gt;
After much searching online, gnashing of teeth and hand-wringing, the issue was solved by adding &amp;lt;code&amp;gt;&amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; to the cover (page 1), then a bunch of break tags: &amp;lt;pre&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This pushed the text down to page 2, where it flowed across both columns, as originally intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disappearing sentences ==&lt;br /&gt;
&lt;br /&gt;
Since OSP has been working on [http://diversions.constantvzw.org/ DiVersions] in 2020, which is made with Paged.js, stories of disappearing sentences on page breaks have been circulating in the web-to-print networks-of-networks. It also emerged in the context of making [https://volumetricregimes.xyz/index.php?title=Main_Page Volumetric Regimes]. &lt;br /&gt;
&lt;br /&gt;
Below is a log of messages and exchanges on the Mattermost instance of Coko around this issue. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all, hope you are well! A couple of months ago i have been hanging around here (or actually in the other chat instance before the move to this one) to learn about paged.js as i was working on a 300+ pages book. It has been my first bigger project made with paged.js and it has been an amazing learning curve! The making of the book has been on hold for a while and i’m picking it up again these days, but unfortunately a mysterious problem suddenly appeared again: sentences are “eaten” and thus disappearing at the bottom of pages. I had bumped into this in the very beginning of the project too, and @julien was so nice to talk me through possible things that could have caused it. We talked about documenting this in some way, as i have heard stories of designers around me who also bumped into this and said how much anxiety it gives them to not understand when or why sentences disappear. Specially when they work with deadlines, this can easily create all-nighters to make sure that a PDF can be send to print on time. We did not find the time to talk and document it at the end of 2021, but since i’m bumping into this problem again now, and it feels interesting and relevant to document this, i was wondering if @julien or someone else would be up for a short conversation somewhere next week to chat about it?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: About the missing sentence in the 342 pages book (Volumetric Regimes): &lt;br /&gt;
&lt;br /&gt;
* i checked the zoom, the browser is at 100% &lt;br /&gt;
* all my sizes are in px, including the baseline and top and bottom margins of the page, to avoid the rounding issue &lt;br /&gt;
* when i turn Hyphenology off, the issue disappears&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I tried again to tweak the page margins, but without success. If i make them smaller, the missing line reappears, but … the next one is missing.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I feel quite desperate now… don’t know what to do anymore, the “hack” of this afternoon (working with the CTRL+S saved copy) messes up the text flow, … which leaves me out of options to try other things or find other hack-ish ways to send this file to print :slightly_frowning_face:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: It turns out that without Hyphenology everything is oke, but we need Hyphenology for the hyphenation of the book… Did you encounter this missing sentences bug before by any chance, in combination with Hyphenology? Is there anything i can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Meanwhile…. i am back at my 342 pages book project, we are sending it to print, but unfortunately the missing sentences bug reappeared……&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey Julien, hope you are well! I wanted to let you know that the missing sentences problem strangely enough suddenly disappeared again. The PDF renders oke now, and i’m crossing fingers for it to stay like this!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hello all! I&#039;m writing with a question around the mystery of sentences disappearing on page breaks... It appeared again, while making a 1st of May anarchist newspaper in Varia. I&#039;m not working on it myself, but it made me curious to check in here and ask what the current status is around these haunting moments? &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there. i think we had some interesting experiments with @harshna, it seems that when you have some element with a subpixel height, the rounding/conversion seems to break things. Do you have anything set using em? to explain quickly: on screen, chrome will consider that 8.8px is equal to 8px (6pt). but when it puts the same content on the paper, it consider that 8.8px = 6.6pt. The amount of content it can add on screen is a bit different than what you have on paper. But since paged,js already made the break between pages. the content moves a little bit. &lt;br /&gt;
&lt;br /&gt;
I have an idea to test later with @harshna so we could come with a more usable solution (i hope)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Thanks so much for the reply, will forward this to the others at Varia who were making the newspaper! And would you recommend to work in pixels or in points? I think I asked you this before... but i can&#039;t find my notes back :confused:...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: pixel. because the screen is used to draw the pages first. (we’re exploring options to change a bit how pagedjs do the conversion but it’s not really that simple)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: Hmmmm, yeh, it doesn&#039;t seem to be working. I&#039;m only working with px now across the entire stylesheet&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: things are getting dissapeared on the page breaks between columns (image 1: pdf view image 2: print preview) &lt;br /&gt;
&lt;br /&gt;
[[File:Missing-sentences-decentral1se-1.png|300px]] [[File:Missing-sentences-decentral1se-2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: there is also a report about 2 column layout doing strange things so i might try 3 column layout :thinking_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: I agree its still breaking in some places. Its not only about 2 column layout, we tried with single column layout and it has missing lines too. We are working on a fix for that now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: aha ok, cool! thanks for the efforts :star2: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: happy to test stuff if that helps&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: it would be great if you could report abnormalities/ any patterns that you find&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: thank you&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: @decentral1se do you have any footnotes?&lt;br /&gt;
&lt;br /&gt;
we may have found a way to hack our way out of those weird rounding issues.&lt;br /&gt;
&lt;br /&gt;
by adding and then removing some emtpy space.&lt;br /&gt;
&lt;br /&gt;
(a hack,really}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: no footnotes, some text in @page:first { @top-left { content: &amp;quot;...&amp;quot;; ... and page numbers tho. Everythings in https://octomode.vvvvvvaria.org/anarcho-krant-mvp-issue-1/stylesheet/ (DM me for username/password).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: curious about the hack :nerd_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: ok so, the idea is to leverage the footnote space by giving it some empty space, and run a hook to remove that space just before printing.&lt;br /&gt;
&lt;br /&gt;
really, a hack&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class fixMissingLine extends Paged.Handler {&lt;br /&gt;
  constructor(chunker, polisher, caller) {&lt;br /&gt;
    super(chunker, polisher, caller);&lt;br /&gt;
    this.moveToParentFig = [];&lt;br /&gt;
  }&lt;br /&gt;
  afterRendered(pages) {&lt;br /&gt;
    document.querySelectorAll(&#039;.pagedjs_sheet&#039;).forEach(sheet =&amp;gt; sheet.style.setProperty(&#039;--pagedjs-footnotes-height&#039;, &#039;0px&#039;))&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
Paged.registerHandlers(fixMissingLine);&lt;br /&gt;
&lt;br /&gt;
and add to your css:&lt;br /&gt;
.pagedjs_sheet {&lt;br /&gt;
--pagedjs-footnotes-height: 12px&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i hope the children never learn we did such a trick.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: it&#039;s hacks all the way down :smile_cat: &lt;br /&gt;
&lt;br /&gt;
i will see about integrating this into octomode to test&lt;br /&gt;
&lt;br /&gt;
have you had some luck testing this already? &lt;br /&gt;
&lt;br /&gt;
oh hmm if i don&#039;t already have footnotes, then i can&#039;t use this? :thinking_face:  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: yep you can &lt;br /&gt;
&lt;br /&gt;
and yes we tried.&lt;br /&gt;
&lt;br /&gt;
it’s completely untested and quite dangerous but hey, who wants to live a long and nice and peaceful life right? :sunglasses: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: haha lovely stuff, will try tmoz, thx!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
===Links===&lt;br /&gt;
&lt;br /&gt;
* https://git.vvvvvvaria.org/varia/octomode/issues/25&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/130&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87#issuecomment-1476958035&lt;br /&gt;
&lt;br /&gt;
==Differences in PDF renderings in Mac/Linux==&lt;br /&gt;
&lt;br /&gt;
https://mattermost.coko.foundation/coko/pl/6jdgxiybridq5bg4scx63tirgh&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-page-77-78-mb.png|thumb|right|screenshot on Linux]] &lt;br /&gt;
[[File:Screenshot-page-77-78-simon-sm.png|thumb|right|screenshot on Mac]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all! Hope you are having a lovely summer.  @simoon and i&#039;re slowly picking up work again in Rotterdam and are wrapping up a remake of the APRJA journal, which is now produced with Paged.js. :wink:&lt;br /&gt;
&lt;br /&gt;
While going to the list of last changes, we noticed that Paged.js renders the pages differently on a Mac and Linux computer, even though we are on the exact same version of Chrome  :grimacing:.&lt;br /&gt;
Have you noticed that before? Is there anything we can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there!&lt;br /&gt;
yeah it’s one of those thing we can’t really do anything about because it’s about mac and linux use their fonts.&lt;br /&gt;
&lt;br /&gt;
so for example. hypens have been available on mac for much longer than for linux :confused:&lt;br /&gt;
&lt;br /&gt;
The only workaround is by using pagedjs-cli on a server, which comes with the problem of having a hardest time to make small changes.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5510</id>
		<title>Error log</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5510"/>
		<updated>2026-02-13T10:25:33Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Left-justifying a last line in a full justified paragraph */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents (some of) the quirks of using free/libre open-source software to make graphic design &#039;&#039;in Octomode&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are all Paged.js related atm.&lt;br /&gt;
&lt;br /&gt;
== Left-justifying a last line in a full justified paragraph ==&lt;br /&gt;
&lt;br /&gt;
=== the problem ===&lt;br /&gt;
The text is full justified throughout, with text indentations before each paragraph, and a mix of line breaks and paragraph breaks. But the last sentence of the paragraph is also full justified, because there is a ```&amp;lt;br&amp;gt;``` that makes the paragraph break. You could drive a truck through those word spaces.&lt;br /&gt;
&lt;br /&gt;
[[File:you-could-drive-a-truck-through-those-wordspaces.png|thumb|Last line is also full justified :sadface:]]&lt;br /&gt;
&lt;br /&gt;
=== the solution ===&lt;br /&gt;
Lazy method: add a whole heap of non-breaking spaces into the content&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:non-breaking-spaces-hack.png|thumb|packing a bunch of non-breaking spaces]]&lt;br /&gt;
&lt;br /&gt;
=== the result ===&lt;br /&gt;
Voila! The last line is now left-justified. There must be a more elegant way to do this, but we go to print in 2 days (!)&lt;br /&gt;
&lt;br /&gt;
[[File:last-line-full-justified.png|thumb|hackity hack works!]]&lt;br /&gt;
&lt;br /&gt;
== An unexpected column jump ==&lt;br /&gt;
[[File:firefox-image-cutoff.png|thumb|Images cut off in PDF exported from Firefox]]&lt;br /&gt;
[[File:column-jump-issue.png|thumb|The automagical column jump]]&lt;br /&gt;
&lt;br /&gt;
=== The situation ===&lt;br /&gt;
The intention was to make a multi-page report, which has a cover page and text flowing across two columns, beginning on page 2. The document was made using the Firefox browser over the course of a week or so. Everything looked great, until the PDF was exported, which showed images breaking across columns. Strange, as this was not how it appeared in the PDF as it was rendered in the browser.&lt;br /&gt;
&lt;br /&gt;
So, the switch was made to Chrome, which was recommended as a more stable browser to work with. But in Chrome, there was an entirely different issue. On page 2, the text did not flow across two columns. Instead, it jumped from the left-hand column on page 2, to page 3.&lt;br /&gt;
&lt;br /&gt;
=== Inspecting... ===&lt;br /&gt;
In the CSS, the property and values &amp;lt;code&amp;gt;columns: 2 auto;&amp;lt;/code&amp;gt; were previously applied to a class called &amp;lt;code&amp;gt;.columns&amp;lt;/code&amp;gt;. In the pad, this class had also been added on page 2, like so: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When inspecting the elements, it appeared that the &amp;lt;code&amp;gt;&amp;lt;section&amp;gt;&amp;lt;/code&amp;gt; tag had been closed at the end of the first column automagically. So, the text did not flow to the second column, as the browser thought this was the end of the section?&lt;br /&gt;
&lt;br /&gt;
=== Resolution ===&lt;br /&gt;
After much searching online, gnashing of teeth and hand-wringing, the issue was solved by adding &amp;lt;code&amp;gt;&amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; to the cover (page 1), then a bunch of break tags: &amp;lt;pre&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This pushed the text down to page 2, where it flowed across both columns, as originally intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disappearing sentences ==&lt;br /&gt;
&lt;br /&gt;
Since OSP has been working on [http://diversions.constantvzw.org/ DiVersions] in 2020, which is made with Paged.js, stories of disappearing sentences on page breaks have been circulating in the web-to-print networks-of-networks. It also emerged in the context of making [https://volumetricregimes.xyz/index.php?title=Main_Page Volumetric Regimes]. &lt;br /&gt;
&lt;br /&gt;
Below is a log of messages and exchanges on the Mattermost instance of Coko around this issue. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all, hope you are well! A couple of months ago i have been hanging around here (or actually in the other chat instance before the move to this one) to learn about paged.js as i was working on a 300+ pages book. It has been my first bigger project made with paged.js and it has been an amazing learning curve! The making of the book has been on hold for a while and i’m picking it up again these days, but unfortunately a mysterious problem suddenly appeared again: sentences are “eaten” and thus disappearing at the bottom of pages. I had bumped into this in the very beginning of the project too, and @julien was so nice to talk me through possible things that could have caused it. We talked about documenting this in some way, as i have heard stories of designers around me who also bumped into this and said how much anxiety it gives them to not understand when or why sentences disappear. Specially when they work with deadlines, this can easily create all-nighters to make sure that a PDF can be send to print on time. We did not find the time to talk and document it at the end of 2021, but since i’m bumping into this problem again now, and it feels interesting and relevant to document this, i was wondering if @julien or someone else would be up for a short conversation somewhere next week to chat about it?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: About the missing sentence in the 342 pages book (Volumetric Regimes): &lt;br /&gt;
&lt;br /&gt;
* i checked the zoom, the browser is at 100% &lt;br /&gt;
* all my sizes are in px, including the baseline and top and bottom margins of the page, to avoid the rounding issue &lt;br /&gt;
* when i turn Hyphenology off, the issue disappears&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I tried again to tweak the page margins, but without success. If i make them smaller, the missing line reappears, but … the next one is missing.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I feel quite desperate now… don’t know what to do anymore, the “hack” of this afternoon (working with the CTRL+S saved copy) messes up the text flow, … which leaves me out of options to try other things or find other hack-ish ways to send this file to print :slightly_frowning_face:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: It turns out that without Hyphenology everything is oke, but we need Hyphenology for the hyphenation of the book… Did you encounter this missing sentences bug before by any chance, in combination with Hyphenology? Is there anything i can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Meanwhile…. i am back at my 342 pages book project, we are sending it to print, but unfortunately the missing sentences bug reappeared……&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey Julien, hope you are well! I wanted to let you know that the missing sentences problem strangely enough suddenly disappeared again. The PDF renders oke now, and i’m crossing fingers for it to stay like this!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hello all! I&#039;m writing with a question around the mystery of sentences disappearing on page breaks... It appeared again, while making a 1st of May anarchist newspaper in Varia. I&#039;m not working on it myself, but it made me curious to check in here and ask what the current status is around these haunting moments? &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there. i think we had some interesting experiments with @harshna, it seems that when you have some element with a subpixel height, the rounding/conversion seems to break things. Do you have anything set using em? to explain quickly: on screen, chrome will consider that 8.8px is equal to 8px (6pt). but when it puts the same content on the paper, it consider that 8.8px = 6.6pt. The amount of content it can add on screen is a bit different than what you have on paper. But since paged,js already made the break between pages. the content moves a little bit. &lt;br /&gt;
&lt;br /&gt;
I have an idea to test later with @harshna so we could come with a more usable solution (i hope)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Thanks so much for the reply, will forward this to the others at Varia who were making the newspaper! And would you recommend to work in pixels or in points? I think I asked you this before... but i can&#039;t find my notes back :confused:...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: pixel. because the screen is used to draw the pages first. (we’re exploring options to change a bit how pagedjs do the conversion but it’s not really that simple)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: Hmmmm, yeh, it doesn&#039;t seem to be working. I&#039;m only working with px now across the entire stylesheet&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: things are getting dissapeared on the page breaks between columns (image 1: pdf view image 2: print preview) &lt;br /&gt;
&lt;br /&gt;
[[File:Missing-sentences-decentral1se-1.png|300px]] [[File:Missing-sentences-decentral1se-2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: there is also a report about 2 column layout doing strange things so i might try 3 column layout :thinking_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: I agree its still breaking in some places. Its not only about 2 column layout, we tried with single column layout and it has missing lines too. We are working on a fix for that now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: aha ok, cool! thanks for the efforts :star2: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: happy to test stuff if that helps&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: it would be great if you could report abnormalities/ any patterns that you find&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: thank you&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: @decentral1se do you have any footnotes?&lt;br /&gt;
&lt;br /&gt;
we may have found a way to hack our way out of those weird rounding issues.&lt;br /&gt;
&lt;br /&gt;
by adding and then removing some emtpy space.&lt;br /&gt;
&lt;br /&gt;
(a hack,really}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: no footnotes, some text in @page:first { @top-left { content: &amp;quot;...&amp;quot;; ... and page numbers tho. Everythings in https://octomode.vvvvvvaria.org/anarcho-krant-mvp-issue-1/stylesheet/ (DM me for username/password).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: curious about the hack :nerd_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: ok so, the idea is to leverage the footnote space by giving it some empty space, and run a hook to remove that space just before printing.&lt;br /&gt;
&lt;br /&gt;
really, a hack&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class fixMissingLine extends Paged.Handler {&lt;br /&gt;
  constructor(chunker, polisher, caller) {&lt;br /&gt;
    super(chunker, polisher, caller);&lt;br /&gt;
    this.moveToParentFig = [];&lt;br /&gt;
  }&lt;br /&gt;
  afterRendered(pages) {&lt;br /&gt;
    document.querySelectorAll(&#039;.pagedjs_sheet&#039;).forEach(sheet =&amp;gt; sheet.style.setProperty(&#039;--pagedjs-footnotes-height&#039;, &#039;0px&#039;))&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
Paged.registerHandlers(fixMissingLine);&lt;br /&gt;
&lt;br /&gt;
and add to your css:&lt;br /&gt;
.pagedjs_sheet {&lt;br /&gt;
--pagedjs-footnotes-height: 12px&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i hope the children never learn we did such a trick.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: it&#039;s hacks all the way down :smile_cat: &lt;br /&gt;
&lt;br /&gt;
i will see about integrating this into octomode to test&lt;br /&gt;
&lt;br /&gt;
have you had some luck testing this already? &lt;br /&gt;
&lt;br /&gt;
oh hmm if i don&#039;t already have footnotes, then i can&#039;t use this? :thinking_face:  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: yep you can &lt;br /&gt;
&lt;br /&gt;
and yes we tried.&lt;br /&gt;
&lt;br /&gt;
it’s completely untested and quite dangerous but hey, who wants to live a long and nice and peaceful life right? :sunglasses: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: haha lovely stuff, will try tmoz, thx!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
===Links===&lt;br /&gt;
&lt;br /&gt;
* https://git.vvvvvvaria.org/varia/octomode/issues/25&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/130&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87#issuecomment-1476958035&lt;br /&gt;
&lt;br /&gt;
==Differences in PDF renderings in Mac/Linux==&lt;br /&gt;
&lt;br /&gt;
https://mattermost.coko.foundation/coko/pl/6jdgxiybridq5bg4scx63tirgh&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-page-77-78-mb.png|thumb|right|screenshot on Linux]] &lt;br /&gt;
[[File:Screenshot-page-77-78-simon-sm.png|thumb|right|screenshot on Mac]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all! Hope you are having a lovely summer.  @simoon and i&#039;re slowly picking up work again in Rotterdam and are wrapping up a remake of the APRJA journal, which is now produced with Paged.js. :wink:&lt;br /&gt;
&lt;br /&gt;
While going to the list of last changes, we noticed that Paged.js renders the pages differently on a Mac and Linux computer, even though we are on the exact same version of Chrome  :grimacing:.&lt;br /&gt;
Have you noticed that before? Is there anything we can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there!&lt;br /&gt;
yeah it’s one of those thing we can’t really do anything about because it’s about mac and linux use their fonts.&lt;br /&gt;
&lt;br /&gt;
so for example. hypens have been available on mac for much longer than for linux :confused:&lt;br /&gt;
&lt;br /&gt;
The only workaround is by using pagedjs-cli on a server, which comes with the problem of having a hardest time to make small changes.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5509</id>
		<title>Error log</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Error_log&amp;diff=5509"/>
		<updated>2026-02-13T10:25:13Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents (some of) the quirks of using free/libre open-source software to make graphic design &#039;&#039;in Octomode&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are all Paged.js related atm.&lt;br /&gt;
&lt;br /&gt;
== Left-justifying a last line in a full justified paragraph ==&lt;br /&gt;
&lt;br /&gt;
=== the problem ===&lt;br /&gt;
The text is full justified throughout, with text indentations before each paragraph, and a mix of line breaks and paragraph breaks. But the last sentence of the paragraph is also full justified, because there is a ```&amp;lt;br&amp;gt;``` that makes the paragraph break. You could drive a truck through those word spaces.&lt;br /&gt;
[[File:you-could-drive-a-truck-through-those-wordspaces.png|thumb|Last line is also full justified :sadface:]]&lt;br /&gt;
&lt;br /&gt;
=== the solution ===&lt;br /&gt;
Lazy method: add a whole heap of non-breaking spaces into the content&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;code&amp;gt;&lt;br /&gt;
[[File:non-breaking-spaces-hack.png|thumb|packing a bunch of non-breaking spaces]]&lt;br /&gt;
&lt;br /&gt;
=== the result ===&lt;br /&gt;
Voila! The last line is now left-justified. There must be a more elegant way to do this, but we go to print in 2 days (!)&lt;br /&gt;
[[File:last-line-full-justified.png|thumb|hackity hack works!]]&lt;br /&gt;
&lt;br /&gt;
== An unexpected column jump ==&lt;br /&gt;
[[File:firefox-image-cutoff.png|thumb|Images cut off in PDF exported from Firefox]]&lt;br /&gt;
[[File:column-jump-issue.png|thumb|The automagical column jump]]&lt;br /&gt;
&lt;br /&gt;
=== The situation ===&lt;br /&gt;
The intention was to make a multi-page report, which has a cover page and text flowing across two columns, beginning on page 2. The document was made using the Firefox browser over the course of a week or so. Everything looked great, until the PDF was exported, which showed images breaking across columns. Strange, as this was not how it appeared in the PDF as it was rendered in the browser.&lt;br /&gt;
&lt;br /&gt;
So, the switch was made to Chrome, which was recommended as a more stable browser to work with. But in Chrome, there was an entirely different issue. On page 2, the text did not flow across two columns. Instead, it jumped from the left-hand column on page 2, to page 3.&lt;br /&gt;
&lt;br /&gt;
=== Inspecting... ===&lt;br /&gt;
In the CSS, the property and values &amp;lt;code&amp;gt;columns: 2 auto;&amp;lt;/code&amp;gt; were previously applied to a class called &amp;lt;code&amp;gt;.columns&amp;lt;/code&amp;gt;. In the pad, this class had also been added on page 2, like so: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When inspecting the elements, it appeared that the &amp;lt;code&amp;gt;&amp;lt;section&amp;gt;&amp;lt;/code&amp;gt; tag had been closed at the end of the first column automagically. So, the text did not flow to the second column, as the browser thought this was the end of the section?&lt;br /&gt;
&lt;br /&gt;
=== Resolution ===&lt;br /&gt;
After much searching online, gnashing of teeth and hand-wringing, the issue was solved by adding &amp;lt;code&amp;gt;&amp;lt;section class=&amp;quot;columns&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; to the cover (page 1), then a bunch of break tags: &amp;lt;pre&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This pushed the text down to page 2, where it flowed across both columns, as originally intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disappearing sentences ==&lt;br /&gt;
&lt;br /&gt;
Since OSP has been working on [http://diversions.constantvzw.org/ DiVersions] in 2020, which is made with Paged.js, stories of disappearing sentences on page breaks have been circulating in the web-to-print networks-of-networks. It also emerged in the context of making [https://volumetricregimes.xyz/index.php?title=Main_Page Volumetric Regimes]. &lt;br /&gt;
&lt;br /&gt;
Below is a log of messages and exchanges on the Mattermost instance of Coko around this issue. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all, hope you are well! A couple of months ago i have been hanging around here (or actually in the other chat instance before the move to this one) to learn about paged.js as i was working on a 300+ pages book. It has been my first bigger project made with paged.js and it has been an amazing learning curve! The making of the book has been on hold for a while and i’m picking it up again these days, but unfortunately a mysterious problem suddenly appeared again: sentences are “eaten” and thus disappearing at the bottom of pages. I had bumped into this in the very beginning of the project too, and @julien was so nice to talk me through possible things that could have caused it. We talked about documenting this in some way, as i have heard stories of designers around me who also bumped into this and said how much anxiety it gives them to not understand when or why sentences disappear. Specially when they work with deadlines, this can easily create all-nighters to make sure that a PDF can be send to print on time. We did not find the time to talk and document it at the end of 2021, but since i’m bumping into this problem again now, and it feels interesting and relevant to document this, i was wondering if @julien or someone else would be up for a short conversation somewhere next week to chat about it?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: About the missing sentence in the 342 pages book (Volumetric Regimes): &lt;br /&gt;
&lt;br /&gt;
* i checked the zoom, the browser is at 100% &lt;br /&gt;
* all my sizes are in px, including the baseline and top and bottom margins of the page, to avoid the rounding issue &lt;br /&gt;
* when i turn Hyphenology off, the issue disappears&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I tried again to tweak the page margins, but without success. If i make them smaller, the missing line reappears, but … the next one is missing.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: I feel quite desperate now… don’t know what to do anymore, the “hack” of this afternoon (working with the CTRL+S saved copy) messes up the text flow, … which leaves me out of options to try other things or find other hack-ish ways to send this file to print :slightly_frowning_face:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: It turns out that without Hyphenology everything is oke, but we need Hyphenology for the hyphenation of the book… Did you encounter this missing sentences bug before by any chance, in combination with Hyphenology? Is there anything i can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Meanwhile…. i am back at my 342 pages book project, we are sending it to print, but unfortunately the missing sentences bug reappeared……&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey Julien, hope you are well! I wanted to let you know that the missing sentences problem strangely enough suddenly disappeared again. The PDF renders oke now, and i’m crossing fingers for it to stay like this!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hello all! I&#039;m writing with a question around the mystery of sentences disappearing on page breaks... It appeared again, while making a 1st of May anarchist newspaper in Varia. I&#039;m not working on it myself, but it made me curious to check in here and ask what the current status is around these haunting moments? &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there. i think we had some interesting experiments with @harshna, it seems that when you have some element with a subpixel height, the rounding/conversion seems to break things. Do you have anything set using em? to explain quickly: on screen, chrome will consider that 8.8px is equal to 8px (6pt). but when it puts the same content on the paper, it consider that 8.8px = 6.6pt. The amount of content it can add on screen is a bit different than what you have on paper. But since paged,js already made the break between pages. the content moves a little bit. &lt;br /&gt;
&lt;br /&gt;
I have an idea to test later with @harshna so we could come with a more usable solution (i hope)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Thanks so much for the reply, will forward this to the others at Varia who were making the newspaper! And would you recommend to work in pixels or in points? I think I asked you this before... but i can&#039;t find my notes back :confused:...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: pixel. because the screen is used to draw the pages first. (we’re exploring options to change a bit how pagedjs do the conversion but it’s not really that simple)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: Hmmmm, yeh, it doesn&#039;t seem to be working. I&#039;m only working with px now across the entire stylesheet&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: things are getting dissapeared on the page breaks between columns (image 1: pdf view image 2: print preview) &lt;br /&gt;
&lt;br /&gt;
[[File:Missing-sentences-decentral1se-1.png|300px]] [[File:Missing-sentences-decentral1se-2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: there is also a report about 2 column layout doing strange things so i might try 3 column layout :thinking_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: I agree its still breaking in some places. Its not only about 2 column layout, we tried with single column layout and it has missing lines too. We are working on a fix for that now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: aha ok, cool! thanks for the efforts :star2: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: happy to test stuff if that helps&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;harshna&#039;&#039;&#039;: it would be great if you could report abnormalities/ any patterns that you find&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: thank you&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: @decentral1se do you have any footnotes?&lt;br /&gt;
&lt;br /&gt;
we may have found a way to hack our way out of those weird rounding issues.&lt;br /&gt;
&lt;br /&gt;
by adding and then removing some emtpy space.&lt;br /&gt;
&lt;br /&gt;
(a hack,really}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: no footnotes, some text in @page:first { @top-left { content: &amp;quot;...&amp;quot;; ... and page numbers tho. Everythings in https://octomode.vvvvvvaria.org/anarcho-krant-mvp-issue-1/stylesheet/ (DM me for username/password).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: curious about the hack :nerd_face: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: ok so, the idea is to leverage the footnote space by giving it some empty space, and run a hook to remove that space just before printing.&lt;br /&gt;
&lt;br /&gt;
really, a hack&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class fixMissingLine extends Paged.Handler {&lt;br /&gt;
  constructor(chunker, polisher, caller) {&lt;br /&gt;
    super(chunker, polisher, caller);&lt;br /&gt;
    this.moveToParentFig = [];&lt;br /&gt;
  }&lt;br /&gt;
  afterRendered(pages) {&lt;br /&gt;
    document.querySelectorAll(&#039;.pagedjs_sheet&#039;).forEach(sheet =&amp;gt; sheet.style.setProperty(&#039;--pagedjs-footnotes-height&#039;, &#039;0px&#039;))&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
Paged.registerHandlers(fixMissingLine);&lt;br /&gt;
&lt;br /&gt;
and add to your css:&lt;br /&gt;
.pagedjs_sheet {&lt;br /&gt;
--pagedjs-footnotes-height: 12px&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i hope the children never learn we did such a trick.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: it&#039;s hacks all the way down :smile_cat: &lt;br /&gt;
&lt;br /&gt;
i will see about integrating this into octomode to test&lt;br /&gt;
&lt;br /&gt;
have you had some luck testing this already? &lt;br /&gt;
&lt;br /&gt;
oh hmm if i don&#039;t already have footnotes, then i can&#039;t use this? :thinking_face:  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: yep you can &lt;br /&gt;
&lt;br /&gt;
and yes we tried.&lt;br /&gt;
&lt;br /&gt;
it’s completely untested and quite dangerous but hey, who wants to live a long and nice and peaceful life right? :sunglasses: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;decentral1se&#039;&#039;&#039;: haha lovely stuff, will try tmoz, thx!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
===Links===&lt;br /&gt;
&lt;br /&gt;
* https://git.vvvvvvaria.org/varia/octomode/issues/25&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/130&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87&lt;br /&gt;
* https://github.com/pagedjs/pagedjs/issues/87#issuecomment-1476958035&lt;br /&gt;
&lt;br /&gt;
==Differences in PDF renderings in Mac/Linux==&lt;br /&gt;
&lt;br /&gt;
https://mattermost.coko.foundation/coko/pl/6jdgxiybridq5bg4scx63tirgh&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-page-77-78-mb.png|thumb|right|screenshot on Linux]] &lt;br /&gt;
[[File:Screenshot-page-77-78-simon-sm.png|thumb|right|screenshot on Mac]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;m---b&#039;&#039;&#039;: Hey all! Hope you are having a lovely summer.  @simoon and i&#039;re slowly picking up work again in Rotterdam and are wrapping up a remake of the APRJA journal, which is now produced with Paged.js. :wink:&lt;br /&gt;
&lt;br /&gt;
While going to the list of last changes, we noticed that Paged.js renders the pages differently on a Mac and Linux computer, even though we are on the exact same version of Chrome  :grimacing:.&lt;br /&gt;
Have you noticed that before? Is there anything we can do?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;julien&#039;&#039;&#039;: hey there!&lt;br /&gt;
yeah it’s one of those thing we can’t really do anything about because it’s about mac and linux use their fonts.&lt;br /&gt;
&lt;br /&gt;
so for example. hypens have been available on mac for much longer than for linux :confused:&lt;br /&gt;
&lt;br /&gt;
The only workaround is by using pagedjs-cli on a server, which comes with the problem of having a hardest time to make small changes.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Compresspdf.sh&amp;diff=5508</id>
		<title>Compresspdf.sh</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Compresspdf.sh&amp;diff=5508"/>
		<updated>2026-02-04T17:08:03Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Script==&lt;br /&gt;
&lt;br /&gt;
[[File:compresspdf-2.png|thumb|right|A PDF&#039;s size before compression]]&lt;br /&gt;
[[File:compresspdf-1.png|thumb|right|The resampled PDF&#039;s size, after compression]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
pdffile=$1;&lt;br /&gt;
dpi=$2 &lt;br /&gt;
&lt;br /&gt;
gs \&lt;br /&gt;
  -o &amp;quot;${pdffile%.pdf}-resampled.pdf&amp;quot; \&lt;br /&gt;
  -sDEVICE=pdfwrite \&lt;br /&gt;
  -dDownsampleColorImages=true \&lt;br /&gt;
  -dDownsampleGrayImages=true \&lt;br /&gt;
  -dDownsampleMonoImages=true \&lt;br /&gt;
  -dColorImageResolution=$dpi \&lt;br /&gt;
  -dGrayImageResolution=$dpi \&lt;br /&gt;
  -dMonoImageResolution=$dpi \&lt;br /&gt;
  -dColorImageDownsampleThreshold=1.0 \&lt;br /&gt;
  -dGrayImageDownsampleThreshold=1.0 \&lt;br /&gt;
  -dMonoImageDownsampleThreshold=1.0 \&lt;br /&gt;
   &amp;quot;${pdffile}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to work with it?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What does this script do?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This script squashes large PDFs into very small ones.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In which context was it made?&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
The script is written by [http://osp.kitchen Open Source Publishing]. It has since travelled through other practices to be used for a variety of applications, usually at the eleventh hour before sending PDFs via email and webforms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What software does it use?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.ghostscript.com/ &amp;lt;code&amp;gt;ghostscript&amp;lt;/code&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to download these pieces of software?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Go to the URL https://www.ghostscript.com/, you can download it from there.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On which systems can this script run?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This works from the command line in terminal sessions on Linux systems, also on Mac OS. Windows has a different shell, and it is likely it won&#039;t work there.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to run the script?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
After installing the software &amp;lt;code&amp;gt;ghostscript&amp;lt;/code&amp;gt; (see above), save the code above as a bash script with the &amp;lt;code&amp;gt;.sh&amp;lt;/code&amp;gt; extension, for example: &amp;lt;code&amp;gt;compresspdf.sh&amp;lt;/code&amp;gt;. Don&#039;t forget to add &amp;lt;code&amp;gt;#! /bin/bash&amp;lt;/code&amp;gt; to the top of your script!&lt;br /&gt;
&lt;br /&gt;
Make the script executable with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ chmod a+x compresspdf.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in a terminal session add the PDF you want to compress to the same directory as where &amp;lt;code&amp;gt;compresspdf.sh&amp;lt;/code&amp;gt; is saved. &lt;br /&gt;
&lt;br /&gt;
Then do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ ./compresspdf.sh &amp;lt;file.pdf&amp;gt; &amp;lt;resolution in DPI&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ ./compresspdf.sh input.pdf 300&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output will be something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;input-resampled.pdf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Making a portfolio PDF at the last minute==&lt;br /&gt;
&lt;br /&gt;
This script has been used many times on many machines by many users. It&#039;s super handy when making files that need to be sent quickly over a network. One particular use was when making a final final final portfolio PDF for a grant application at the eleventh hour.&lt;br /&gt;
&lt;br /&gt;
Usually, the portfolio is the last thing I make after I write the application text. I should use a template to work from, but I almost always make a file from scratch. I should be better organised! I add images willy-nilly, tailoring them to the particular grant application. And using CSS-to-print to make a PDF means that your software doesn&#039;t have a handy option to compress files when exporting, you have to add this in to the workflow manually.&lt;br /&gt;
&lt;br /&gt;
On the final day of application, January 31st, the resulting PDF was quite large (122,5mb!). I needed to send this through a webform, and the specification was that it could not be bigger than 10mb.&lt;br /&gt;
&lt;br /&gt;
So, I used this script just several hours before submitting the PDF. I managed to get the file down to a manageable size without stress, and pressed send in time. In the end I did not get the grant, but I got the script :)&lt;br /&gt;
&lt;br /&gt;
[[Category:Boilerplates]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Compresspdf.sh&amp;diff=5507</id>
		<title>Compresspdf.sh</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Compresspdf.sh&amp;diff=5507"/>
		<updated>2026-02-04T17:07:28Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* How to work with it? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Script==&lt;br /&gt;
&lt;br /&gt;
[[File:compresspdf-2.png|thumb|right|A PDF&#039;s size before compression]]&lt;br /&gt;
[[File:compresspdf-1.png|thumb|right|The resampled PDF&#039;s size, after compression]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
pdffile=$1;&lt;br /&gt;
dpi=$2 &lt;br /&gt;
&lt;br /&gt;
gs \&lt;br /&gt;
  -o &amp;quot;${pdffile%.pdf}-resampled.pdf&amp;quot; \&lt;br /&gt;
  -sDEVICE=pdfwrite \&lt;br /&gt;
  -dDownsampleColorImages=true \&lt;br /&gt;
  -dDownsampleGrayImages=true \&lt;br /&gt;
  -dDownsampleMonoImages=true \&lt;br /&gt;
  -dColorImageResolution=$dpi \&lt;br /&gt;
  -dGrayImageResolution=$dpi \&lt;br /&gt;
  -dMonoImageResolution=$dpi \&lt;br /&gt;
  -dColorImageDownsampleThreshold=1.0 \&lt;br /&gt;
  -dGrayImageDownsampleThreshold=1.0 \&lt;br /&gt;
  -dMonoImageDownsampleThreshold=1.0 \&lt;br /&gt;
   &amp;quot;${pdffile}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to work with it?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What does this script do?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This script squashes large PDFs into very small ones.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In which context was it made?&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
The script is written by [http://osp.kitchen Open Source Publishing]. It has since travelled through other practices to be used for a variety of applications, usually at the eleventh hour before sending PDFs via email and webforms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What software does it use?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.ghostscript.com/ &amp;lt;code&amp;gt;ghostscript&amp;lt;/code&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to download these pieces of software?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Go to the URL https://www.ghostscript.com/, you can download it from there.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On which systems can this script run?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This works from the command line in terminal sessions on Linux systems, also on Mac OS. Windows has a different shell, and it is likely it won&#039;t work there.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to run the script?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
After installing the software &amp;lt;code&amp;gt;ghostscript&amp;lt;/code&amp;gt; (see above), save the code above as a bash script with the &amp;lt;code&amp;gt;.sh&amp;lt;/code&amp;gt; extension, for example: &amp;lt;code&amp;gt;compresspdf.sh&amp;lt;/code&amp;gt;. Don&#039;t forget to add &amp;lt;code&amp;gt;#! /bin/bash&amp;lt;/code&amp;gt; to the top of your script!&lt;br /&gt;
&lt;br /&gt;
Make the script executable with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ chmod a+x compresspdf.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in a terminal session add the PDF you want to compress to the same directory as where &amp;lt;code&amp;gt;compresspdf.sh&amp;lt;/code&amp;gt; is saved. &lt;br /&gt;
&lt;br /&gt;
Then do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./compresspdf.sh &amp;lt;file.pdf&amp;gt; &amp;lt;resolution in DPI&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./compresspdf.sh input.pdf 300&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output will be something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;input-resampled.pdf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Making a portfolio PDF at the last minute==&lt;br /&gt;
&lt;br /&gt;
This script has been used many times on many machines by many users. It&#039;s super handy when making files that need to be sent quickly over a network. One particular use was when making a final final final portfolio PDF for a grant application at the eleventh hour.&lt;br /&gt;
&lt;br /&gt;
Usually, the portfolio is the last thing I make after I write the application text. I should use a template to work from, but I almost always make a file from scratch. I should be better organised! I add images willy-nilly, tailoring them to the particular grant application. And using CSS-to-print to make a PDF means that your software doesn&#039;t have a handy option to compress files when exporting, you have to add this in to the workflow manually.&lt;br /&gt;
&lt;br /&gt;
On the final day of application, January 31st, the resulting PDF was quite large (122,5mb!). I needed to send this through a webform, and the specification was that it could not be bigger than 10mb.&lt;br /&gt;
&lt;br /&gt;
So, I used this script just several hours before submitting the PDF. I managed to get the file down to a manageable size without stress, and pressed send in time. In the end I did not get the grant, but I got the script :)&lt;br /&gt;
&lt;br /&gt;
[[Category:Boilerplates]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Server_move&amp;diff=5457</id>
		<title>Server move</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Server_move&amp;diff=5457"/>
		<updated>2026-01-23T13:59:25Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Server move */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Server move==&lt;br /&gt;
&lt;br /&gt;
Notes here: [[Services on CC]]&lt;br /&gt;
&lt;br /&gt;
* ✅ migrate etherpad&lt;br /&gt;
** ✅ install etherpad (&amp;lt;code&amp;gt;/opt/etherpad/&amp;lt;/code&amp;gt;)&lt;br /&gt;
** ✅ configure nginx &lt;br /&gt;
** ✅ set etherpad up as a systemd background process&lt;br /&gt;
** ✅ test migration of database&lt;br /&gt;
** ✅ migrate the database&lt;br /&gt;
* ✅ install mediawiki (&amp;lt;code&amp;gt;/var/www/wiki/&amp;lt;/code&amp;gt;, version 1.45)&lt;br /&gt;
** ✅ configure nginx&lt;br /&gt;
** ✅ install php + php-fpm + mariadb&lt;br /&gt;
** ✅ migrate the extensions&lt;br /&gt;
** ✅ &amp;lt;del&amp;gt;re-download all extensions&amp;lt;/del&amp;gt; not needed, only EtherpadLite&lt;br /&gt;
** ✅ applied the hack again to EtherpadLite to hide ip-adresses &lt;br /&gt;
** ✅ migrate the images folder&lt;br /&gt;
** ✅ make new database&lt;br /&gt;
** ✅ test migration of database&lt;br /&gt;
** ✅ migrate the database&lt;br /&gt;
** ✅ check extensions&lt;br /&gt;
** update URL in Localsettings&lt;br /&gt;
*** ✅ check if etherpadlite extension works&lt;br /&gt;
** ✅ check if wiki works again!&lt;br /&gt;
** ✅ check CreatePage extension, disabled now as it threw an error&lt;br /&gt;
* ✅ enable home folders&lt;br /&gt;
* ✅ migrate home folders&lt;br /&gt;
* ✅ migrate /var/www/html/&lt;br /&gt;
* ✅ install octomode (&amp;lt;code&amp;gt;/opt/octomode/&amp;lt;/code&amp;gt;, running on port 3333)&lt;br /&gt;
** ✅ update pad URL in .env file &lt;br /&gt;
** test if octomode works&lt;br /&gt;
* ✅ install wiki-to-print (&amp;lt;code&amp;gt;/opt/wiki-to-print/&amp;lt;/code&amp;gt;, running on port 4444)&lt;br /&gt;
** test if wiki-to-print works&lt;br /&gt;
** ✅ update wiki URL in config.json&lt;br /&gt;
** ✅ update wiki URL in [[MediaWiki:Common.js]]&lt;br /&gt;
* change DNS of cc.practices.tools (point to our servus ip-address)&lt;br /&gt;
* enable HTTPS&lt;br /&gt;
** ✅ install certbot&lt;br /&gt;
** ✅ activate cronjob&lt;br /&gt;
* decide on http/https redirect in nginx&lt;br /&gt;
* ✅ redirect / to /wiki/&lt;br /&gt;
* check if https://cc.vvvvvvaria.org still works&lt;br /&gt;
** check with Constant, they use the old URL: https://circulations.constantvzw.org/octomode/genocidal_tech/pad/&lt;br /&gt;
* ✅ let ServPub people know that the new URL is https://cc.practices.tools&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Old server:&lt;br /&gt;
&lt;br /&gt;
 Host cc&lt;br /&gt;
 Hostname 51.195.117.20&lt;br /&gt;
 User USERNAME&lt;br /&gt;
 localcommand xtermcontrol --bg &amp;quot;#ffffe0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
New server:&lt;br /&gt;
&lt;br /&gt;
 Host cc&lt;br /&gt;
 Hostname 193.170.194.207&lt;br /&gt;
 User USERNAME&lt;br /&gt;
 localcommand xtermcontrol --bg &amp;quot;#ffff00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Server_move&amp;diff=5454</id>
		<title>Server move</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Server_move&amp;diff=5454"/>
		<updated>2026-01-23T13:46:04Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Server move */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Server move==&lt;br /&gt;
&lt;br /&gt;
Notes here: [[Services on CC]]&lt;br /&gt;
&lt;br /&gt;
* ✅ migrate etherpad&lt;br /&gt;
** ✅ install etherpad (&amp;lt;code&amp;gt;/opt/etherpad/&amp;lt;/code&amp;gt;)&lt;br /&gt;
** ✅ configure nginx &lt;br /&gt;
** ✅ set etherpad up as a systemd background process&lt;br /&gt;
** ✅ test migration of database&lt;br /&gt;
** ✅ migrate the database&lt;br /&gt;
* ✅ install mediawiki (&amp;lt;code&amp;gt;/var/www/wiki/&amp;lt;/code&amp;gt;, version 1.45)&lt;br /&gt;
** ✅ configure nginx&lt;br /&gt;
** ✅ install php + php-fpm + mariadb&lt;br /&gt;
** ✅ migrate the extensions&lt;br /&gt;
** ✅ &amp;lt;del&amp;gt;re-download all extensions&amp;lt;/del&amp;gt; not needed, only EtherpadLite&lt;br /&gt;
** ✅ applied the hack again to EtherpadLite to hide ip-adresses &lt;br /&gt;
** ✅ migrate the images folder&lt;br /&gt;
** ✅ make new database&lt;br /&gt;
** ✅ test migration of database&lt;br /&gt;
** ✅ migrate the database&lt;br /&gt;
** ✅ check extensions&lt;br /&gt;
** update URL in Localsettings&lt;br /&gt;
*** ✅ check if etherpadlite extension works&lt;br /&gt;
** ✅ check if wiki works again!&lt;br /&gt;
** ✅ check CreatePage extension, disabled now as it threw an error&lt;br /&gt;
* ✅ enable home folders&lt;br /&gt;
* ✅ migrate home folders&lt;br /&gt;
* ✅ migrate /var/www/html/&lt;br /&gt;
* ✅ install octomode (&amp;lt;code&amp;gt;/opt/octomode/&amp;lt;/code&amp;gt;, running on port 3333)&lt;br /&gt;
** update pad URL in .env file &lt;br /&gt;
* ✅ install wiki-to-print (&amp;lt;code&amp;gt;/opt/wiki-to-print/&amp;lt;/code&amp;gt;, running on port 4444)&lt;br /&gt;
** test if wiki-to-print works&lt;br /&gt;
** ✅ update wiki URL in config.json&lt;br /&gt;
** ✅ update wiki URL in [[MediaWiki:Common.js]]&lt;br /&gt;
* change DNS of cc.practices.tools (point to our servus ip-address)&lt;br /&gt;
* enable HTTPS&lt;br /&gt;
** install certbot&lt;br /&gt;
** ✅ activate cronjob&lt;br /&gt;
* decide on http/https redirect in nginx&lt;br /&gt;
* ✅ redirect / to /wiki/&lt;br /&gt;
* check if https://cc.vvvvvvaria.org still works&lt;br /&gt;
** check with Constant, they use the old URL: https://circulations.constantvzw.org/octomode/genocidal_tech/pad/&lt;br /&gt;
* let ServPub people know that the new URL is https://cc.practices.tools&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Old server:&lt;br /&gt;
&lt;br /&gt;
 Host cc&lt;br /&gt;
 Hostname 51.195.117.20&lt;br /&gt;
 User USERNAME&lt;br /&gt;
 localcommand xtermcontrol --bg &amp;quot;#ffffe0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
New server:&lt;br /&gt;
&lt;br /&gt;
 Host cc&lt;br /&gt;
 Hostname 193.170.194.207&lt;br /&gt;
 User USERNAME&lt;br /&gt;
 localcommand xtermcontrol --bg &amp;quot;#ffff00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Server_move&amp;diff=5422</id>
		<title>Server move</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Server_move&amp;diff=5422"/>
		<updated>2026-01-23T10:29:40Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Server move==&lt;br /&gt;
&lt;br /&gt;
Notes here: [[Services on CC]]&lt;br /&gt;
&lt;br /&gt;
* migrate etherpad&lt;br /&gt;
** ✅ install etherpad (&amp;lt;code&amp;gt;/opt/etherpad/&amp;lt;/code&amp;gt;)&lt;br /&gt;
** ✅ configure nginx &lt;br /&gt;
** ✅ set etherpad up as a systemd background process&lt;br /&gt;
** ✅ test migration of database&lt;br /&gt;
** migrate the database&lt;br /&gt;
* ✅ install mediawiki (&amp;lt;code&amp;gt;/var/www/wiki/&amp;lt;/code&amp;gt;, version 1.45)&lt;br /&gt;
** ✅ configure nginx&lt;br /&gt;
** ✅ install php + php-fpm + mariadb&lt;br /&gt;
** ✅ migrate the extensions&lt;br /&gt;
** ✅ &amp;lt;del&amp;gt;re-download all extensions&amp;lt;/del&amp;gt; not needed, only EtherpadLite&lt;br /&gt;
** ✅ applied the hack again to EtherpadLite to hide ip-adresses &lt;br /&gt;
** migrate the images folder&lt;br /&gt;
** ✅ make new database&lt;br /&gt;
** ✅ test migration of database&lt;br /&gt;
** migrate the database&lt;br /&gt;
** ✅ check extensions&lt;br /&gt;
*** check if etherpadlite extension works&lt;br /&gt;
** ✅ check if wiki works again!&lt;br /&gt;
** ✅ check CreatePage extension, disabled now as it threw an error&lt;br /&gt;
* ✅ enable home folders&lt;br /&gt;
* migrate home folders&lt;br /&gt;
* migrate /var/www/html/&lt;br /&gt;
* ✅ install octomode (&amp;lt;code&amp;gt;/opt/octomode/&amp;lt;/code&amp;gt;, running on port 3333)&lt;br /&gt;
* ✅ install wiki-to-print (&amp;lt;code&amp;gt;/opt/wiki-to-print/&amp;lt;/code&amp;gt;, running on port 4444)&lt;br /&gt;
** ✅ test if wiki-to-print works&lt;br /&gt;
* change DNS of cc.practices.tools (point to our servus ip-address)&lt;br /&gt;
* enable HTTPS&lt;br /&gt;
** install certbot&lt;br /&gt;
** ✅ activate cronjob&lt;br /&gt;
* decide on http/https redirect in nginx&lt;br /&gt;
* ✅ redirect / to /wiki/&lt;br /&gt;
* check if https://cc.vvvvvvaria.org still works&lt;br /&gt;
* let ServPub people know that the new URL is https://cc.practices.tools&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Old server:&lt;br /&gt;
&lt;br /&gt;
 Host cc&lt;br /&gt;
 Hostname 51.195.117.20&lt;br /&gt;
 User USERNAME&lt;br /&gt;
 localcommand xtermcontrol --bg &amp;quot;#ffffe0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
New server:&lt;br /&gt;
&lt;br /&gt;
 Host cc&lt;br /&gt;
 Hostname 193.170.194.207&lt;br /&gt;
 User USERNAME&lt;br /&gt;
 localcommand xtermcontrol --bg &amp;quot;#ffff00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysadmin]]&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Working_with_what%27s_there&amp;diff=5357</id>
		<title>Working with what&#039;s there</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Working_with_what%27s_there&amp;diff=5357"/>
		<updated>2025-12-24T23:16:37Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:varia-darktimes-sticker-sheet.jpeg|thumb|The full sticker set]]&lt;br /&gt;
[[File:varia-darktimes-sticker-on-laptop.jpeg|thumb|One of the stickers on my laptop]]&lt;br /&gt;
&lt;br /&gt;
If we consider design to be a collaborative, transformative activity of world-building as opposed to just problem-solving, how to think about the materials, entities, and groups that are there to work with?&lt;br /&gt;
&lt;br /&gt;
What does it mean to &#039;&#039;work with material that is already there&#039;&#039;? What does this bring to a design practice?&lt;br /&gt;
&lt;br /&gt;
I&#039;m trying to articulate this in writing on this page. Here is a place to start gathering thoughts around these topics:&lt;br /&gt;
&lt;br /&gt;
* starting from the middle&lt;br /&gt;
* entry points into ongoing conversations around collaborative and collective practices&lt;br /&gt;
* working within a material practice (I want to relate this to [[With_Simon_about_experimental_publishing|these thoughts]] about experimental publishing)&lt;br /&gt;
* autonomy (choosing inter-dependencencies)&lt;br /&gt;
* subsistence and frugality&lt;br /&gt;
* immediacy and DIY&lt;br /&gt;
* collaboration and DIWO&lt;br /&gt;
* finding joy and inspiration within limitations&lt;br /&gt;
* pedagogy and figuring things out together&lt;br /&gt;
* improvisation and ad-hoc approaches&lt;br /&gt;
&lt;br /&gt;
One example of working with what&#039;s there is an improvised sticker set I made for an issue of SomeTimes with Danny at Varia. We were struggling to find inspiration while designing stickers that reflected the theme of Varia&#039;s 2025/2026 Seasonal Computing public programme. Danny suggested making a &amp;quot;dark&amp;quot; sticker set, which contained inside jokes and puns. I had some pre-cut circular sticker sheets laying around from a project in 2012, so I decided to try out some designs that I could print myself. I designed a sheet using a font I bootlegged in 2015 from an Inuit calendar. I&#039;ve been using this font quite a lot lately, because it is there. The apostrophes as accidentally reversed, but I don&#039;t want to fix that because it is not necessary and the font will only be used for display text. What is more important is that the font, like the pre-cut sticker sheets, is at easily at hand.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=Working_with_what%27s_there&amp;diff=5356</id>
		<title>Working with what&#039;s there</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=Working_with_what%27s_there&amp;diff=5356"/>
		<updated>2025-12-24T23:15:50Z</updated>

		<summary type="html">&lt;p&gt;Simoon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:varia-darktimes-sticker-sheet.jpeg|thumb|The full sticker set]]&lt;br /&gt;
[[File:varia-darktimes-sticker-on-laptop.jpeg|thumb|One of the stickers on my laptop]]&lt;br /&gt;
&lt;br /&gt;
If we consider design to be a collaborative, transformative activity of world-building as opposed to just problem-solving, how to think about the materials, entities, and groups that are there to work with?&lt;br /&gt;
&lt;br /&gt;
What does it mean to &#039;&#039;work with material that is already there&#039;&#039;? What does this bring to a design practice?&lt;br /&gt;
&lt;br /&gt;
I&#039;m trying to articulate this in writing on this page. Here is a place to start gathering thoughts around these topics:&lt;br /&gt;
&lt;br /&gt;
* starting from the middle&lt;br /&gt;
* entry points into ongoing conversations around collaborative and collective practices&lt;br /&gt;
* working within a material practice (I want to relate this to [[With_Simon_about_experimental_publishing|these thoughts]] about experimental publishing)&lt;br /&gt;
* autonomy (choosing inter-dependencencies)&lt;br /&gt;
* subsistence and frugality&lt;br /&gt;
* immediacy and DIY&lt;br /&gt;
* collaboration and DIWO&lt;br /&gt;
* finding joy and inspiration within limitations&lt;br /&gt;
* pedagogy and figuring things out together&lt;br /&gt;
* improvisation and ad-hoc approaches&lt;br /&gt;
&lt;br /&gt;
While making design and art in the past years, I&#039;ve noticed that working with what is around me has brought the most joy, and simplified my approach.&lt;br /&gt;
&lt;br /&gt;
One example is an improvised sticker set I made while working on SomeTimes with Danny at Varia. We were struggling to find inspiration while designing stickers that reflected the theme of Varia&#039;s 2025/2026 Seasonal Computing public programme. Danny suggested making a &amp;quot;DarkTimes&amp;quot; sticker set, which contained inside jokes and puns. I had some pre-cut circular sticker sheets laying around from a project in 2012, so I decided to try out some designs that I could print myself. I designed a sheet using a font I bootlegged in 2015 from an Inuit calendar. I&#039;ve been using this font quite a lot lately, because it is there. The apostrophes as accidentally reversed, but I don&#039;t want to fix that because it is not necessary and the font will only be used for display text. What is more important is that the font, like the pre-cut sticker sheets, is at easily at hand.&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
	<entry>
		<id>http://cc.practices.tools/wiki/index.php?title=User:Simoon&amp;diff=5355</id>
		<title>User:Simoon</title>
		<link rel="alternate" type="text/html" href="http://cc.practices.tools/wiki/index.php?title=User:Simoon&amp;diff=5355"/>
		<updated>2025-12-24T23:14:35Z</updated>

		<summary type="html">&lt;p&gt;Simoon: /* Puns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;F/LOSS design + publishing at [https://varia.zone Varia], [https://osp.kitchen OSP] and here at CC&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:simon-bio-pic-2025.jpeg|thumb|2025 bio pic, photo courtesy of Clara Pasteau]]&lt;br /&gt;
&lt;br /&gt;
==CC-Housekeeping==&lt;br /&gt;
&#039;&#039;Keeping up with sysadmin work&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[CC_to_do_list|CC to do list]]&lt;br /&gt;
*[[:Category:Sysadmin]]&lt;br /&gt;
*[[CC-collective conditions for use]]&lt;br /&gt;
&lt;br /&gt;
==CC-Conversations==&lt;br /&gt;
&#039;&#039;Conversations with others about publishing and design&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===about wiki publishing===&lt;br /&gt;
* [[Relearning layout]] with Manetta&lt;br /&gt;
* [[Wiki-to-print, Wiki2print, Wiki-to-pdf,_and_so_on...]] together with Manetta (as Varia), and with Anja, Karl &amp;amp; Heerko (as Hackers &amp;amp; Designers)&lt;br /&gt;
* [[Wiki_publishing_chapter|Wiki publishing]] with Manetta, in the context of ServPub&lt;br /&gt;
&lt;br /&gt;
==Puns==&lt;br /&gt;
&#039;&#039;Jokes that will change the world&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Abode (for) Creative Crowds&lt;br /&gt;
* Two&#039;s company, three&#039;s a creative crowd&lt;br /&gt;
* Sime&#039;s New Roman&lt;br /&gt;
* You are in CC&lt;br /&gt;
* My work is at the intersection of Wolphaertstraat and Gouwstraat&lt;br /&gt;
&lt;br /&gt;
==Snippets==&lt;br /&gt;
&#039;&#039;Bits and pieces of writing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[Re-pairing]]&lt;br /&gt;
* [[D*signweek 2025]]&lt;br /&gt;
* [[Working with what&#039;s there]]&lt;br /&gt;
&lt;br /&gt;
==Typography==&lt;br /&gt;
&#039;&#039;Keeping links and references here in one place&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[https://www.msarnoff.org/millitext/ Millitext], using subpixels (via Doriane)&lt;br /&gt;
&lt;br /&gt;
==Zines==&lt;br /&gt;
&lt;br /&gt;
* [[Why Bootleg Books? / Pourquoi des livres pirates?|&#039;&#039;Why Bootleg Books? / Pourquoi des livres pirates?&#039;&#039;]] published February 2025 at esam Caen (FR)&lt;br /&gt;
* [[Octomode#so,_you_decided_to_make_a_zine_using_octomode|&#039;&#039;So, you decided to make a zine using Octomode&#039;&#039;]] published June 2025 at the Leitrim Sculpture Center (IE)&lt;/div&gt;</summary>
		<author><name>Simoon</name></author>
	</entry>
</feed>