<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://openjournal.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Professorlamp</id>
	<title>openjournal - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://openjournal.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Professorlamp"/>
	<link rel="alternate" type="text/html" href="https://openjournal.wiki/wiki/Special:Contributions/Professorlamp"/>
	<updated>2026-11-09T06:36:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:News_2_2026-09-13&amp;diff=96</id>
		<title>OpenJournal:News 2 2026-09-13</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:News_2_2026-09-13&amp;diff=96"/>
		<updated>2026-09-13T10:09:32Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any user can now store their unfinished posts as drafts.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see a &amp;quot;My drafts&amp;quot; section in the menu. &lt;br /&gt;
&lt;br /&gt;
Write your articles in there and they will stay unlisted (but shareable if you wish) until you decide to publish them via the Publish button.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:News_2_2026-09-13&amp;diff=95</id>
		<title>OpenJournal:News 2 2026-09-13</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:News_2_2026-09-13&amp;diff=95"/>
		<updated>2026-09-13T10:09:26Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Created page with &amp;quot;Any user can now store their unfinished posts as drafts.  You&amp;#039;ll see a &amp;quot;My drafts&amp;quot; section in the menu.   Write your articles in there and they will stay unlisted (but shareable if you wish) until you decide to publish them via the Publish button&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any user can now store their unfinished posts as drafts.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see a &amp;quot;My drafts&amp;quot; section in the menu. &lt;br /&gt;
&lt;br /&gt;
Write your articles in there and they will stay unlisted (but shareable if you wish) until you decide to publish them via the Publish button&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Main_Page&amp;diff=94</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Main_Page&amp;diff=94"/>
		<updated>2026-09-13T10:08:34Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: /* Latest news */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;oj-hero&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;oj-hero-title&amp;quot;&amp;gt;OpenJournal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-hero-sub&amp;quot;&amp;gt;&lt;br /&gt;
OpenJournal is a fully decentralised blogging/journaling/notetaking ecosystem. &lt;br /&gt;
&lt;br /&gt;
Sign in with your wikipedia login and begin writing. &lt;br /&gt;
&lt;br /&gt;
See our [[OpenJournal:Getting started|Getting started]] guide for more. &lt;br /&gt;
&lt;br /&gt;
Want to write here but host your articles elsewhere? Read our [[OpenJournal:API|API guide]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest news ==&lt;br /&gt;
&lt;br /&gt;
[[OpenJournal:News 2 2026-09-13|Drafts are now supported]]&lt;br /&gt;
&lt;br /&gt;
[[OpenJournal:News 1 2026-09-11|OpenJournal now live!]]&lt;br /&gt;
&lt;br /&gt;
== Latest articles ==&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|next=OpenJournal:Latest/2}}&lt;br /&gt;
&lt;br /&gt;
== Everyone writing here ==&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 100&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;span class=&amp;quot;oj-authors&amp;quot;&amp;gt;,&amp;lt;span&amp;gt;[[%PAGE%{{!}}%TITLE%]]&amp;lt;/span&amp;gt;,,&amp;lt;/span&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wanting to help out? ==&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:Helping out]] for a guide on taking backups of the database and general contribution guidelines.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=93</id>
		<title>OpenJournal:API</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=93"/>
		<updated>2026-09-13T10:07:14Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenJournal uses MediaWiki as a backend for all of its content. Anything that is possible on the [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API] is possible here too.&lt;br /&gt;
&lt;br /&gt;
== REST API ==&lt;br /&gt;
&lt;br /&gt;
For convenience, OpenJournal abstracts some of the MediaWiki URLs into a more modern RESTful format.&lt;br /&gt;
&lt;br /&gt;
You can see some examples below:&lt;br /&gt;
&lt;br /&gt;
=== Retrieving content ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /users/{username}/posts                     all of a user&#039;s posts, alphabetical by title&lt;br /&gt;
GET /users/{username}/posts/{title}              one post: title, wikitext, last-edited time&lt;br /&gt;
GET /users/{username}/posts/{title}?format=html  the same post, rendered to HTML&lt;br /&gt;
GET /users/{username}                            redirects to their journal (browsable)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{title}&amp;lt;/code&amp;gt; is the part after the slash, with spaces as underscores, e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;/users/Alice/posts/Laying_a_hedge&amp;lt;/code&amp;gt; for&lt;br /&gt;
&amp;lt;code&amp;gt;User:Alice/Laying a hedge&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Traditional API ==&lt;br /&gt;
&lt;br /&gt;
You can still directly call the API in &amp;quot;the MediaWiki way&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here are some examples&lt;br /&gt;
=== All articles by one user  ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;list=allpages&amp;amp;apnamespace=2&amp;amp;apprefix=Alice/&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as HTML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as source ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== All articles on the site, newest first ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;generator=recentchanges&amp;amp;grcnamespace=2&amp;amp;grclimit=30&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Excerpts and lead images, for a card or a feed ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;prop=extracts|pageimages&amp;amp;exchars=300&amp;amp;explaintext=1&amp;amp;titles=User:Alice/Some_title&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== An Atom feed of everything ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /index.php?title=Special:RecentChanges&amp;amp;feed=atom&amp;amp;namespace=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== An Atom feed of one author ===&lt;br /&gt;
&lt;br /&gt;
One author&#039;s feed is the same URL narrowed with &amp;lt;code&amp;gt;&amp;amp;tagfilter=&amp;lt;/code&amp;gt; or, more&lt;br /&gt;
simply, poll &amp;lt;code&amp;gt;list=allpages&amp;lt;/code&amp;gt; above.&lt;br /&gt;
&lt;br /&gt;
=== Writing from your own code ===&lt;br /&gt;
&lt;br /&gt;
See the full parameter reference at [[Special:ApiHelp/query]] to harness the full power of the API.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Draft:Professorlamp/Mapping_climbs_the_open_source_way&amp;diff=92</id>
		<title>Draft:Professorlamp/Mapping climbs the open source way</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Draft:Professorlamp/Mapping_climbs_the_open_source_way&amp;diff=92"/>
		<updated>2026-09-13T10:05:18Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Created page with &amp;quot;  * Mention OSMAnd * Mention OpenClimbing * Mention OSM * Show docs for Climbing tags&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
* Mention OSMAnd&lt;br /&gt;
* Mention OpenClimbing&lt;br /&gt;
* Mention OSM&lt;br /&gt;
* Show docs for Climbing tags&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Draft:Professorlamp/Draft_test&amp;diff=91</id>
		<title>Draft:Professorlamp/Draft test</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Draft:Professorlamp/Draft_test&amp;diff=91"/>
		<updated>2026-09-13T10:04:06Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Professorlamp moved page Draft:Professorlamp/Draft test to User:Professorlamp/Draft test: Publishing a draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[User:Professorlamp/Draft test]]&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Draft:Professorlamp/My_time_at_Buddhist_retreat&amp;diff=88</id>
		<title>Draft:Professorlamp/My time at Buddhist retreat</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Draft:Professorlamp/My_time_at_Buddhist_retreat&amp;diff=88"/>
		<updated>2026-09-13T10:03:31Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Created page with &amp;quot;Pics here&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pics here&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Main_Page&amp;diff=82</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Main_Page&amp;diff=82"/>
		<updated>2026-09-11T18:01:31Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: /* Latest news */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;oj-hero&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;oj-hero-title&amp;quot;&amp;gt;OpenJournal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-hero-sub&amp;quot;&amp;gt;&lt;br /&gt;
OpenJournal is a fully decentralised blogging/journaling/notetaking ecosystem. &lt;br /&gt;
&lt;br /&gt;
Sign in with your wikipedia login and begin writing. &lt;br /&gt;
&lt;br /&gt;
See our [[OpenJournal:Getting started|Getting started]] guide for more. &lt;br /&gt;
&lt;br /&gt;
Want to write here but host your articles elsewhere? Read our [[OpenJournal:API|API guide]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest news ==&lt;br /&gt;
&lt;br /&gt;
[[OpenJournal:News 1 2026-09-11|OpenJournal now live! (2026-09-11)]]&lt;br /&gt;
&lt;br /&gt;
== Latest articles ==&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|next=OpenJournal:Latest/2}}&lt;br /&gt;
&lt;br /&gt;
== Everyone writing here ==&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 100&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;span class=&amp;quot;oj-authors&amp;quot;&amp;gt;,&amp;lt;span&amp;gt;[[%PAGE%{{!}}%TITLE%]]&amp;lt;/span&amp;gt;,,&amp;lt;/span&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wanting to help out? ==&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:Helping out]] for a guide on taking backups of the database and general contribution guidelines.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:News_1_2026-09-11&amp;diff=81</id>
		<title>OpenJournal:News 1 2026-09-11</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:News_1_2026-09-11&amp;diff=81"/>
		<updated>2026-09-11T18:01:00Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Add first news article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenJournal is now live!&lt;br /&gt;
&lt;br /&gt;
I first imagined a world of open blogging a few weeks back when I stumbled upon OpenStreetMaps due to my love for climbing.&lt;br /&gt;
&lt;br /&gt;
It was Saturday morning, I was mapping out a route to a particular bouldering spot I wanted to try when I misclicked and went into somebody&#039;s OSM profile.&lt;br /&gt;
&lt;br /&gt;
There I saw &amp;quot;User diaries&amp;quot; and thought &amp;quot;Oh cool, it plugs into some other diary-based wiki, nice idea&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
What I didn&#039;t realise is that it was all baked into OpenStreetMaps, no flexibility and not fully open. From then, I started brainstorming and looking around for things that did scratch the itch of a fully free (as in freedom) blogging system that was distributable and decentralised. Surprisingly and disappointingly, there was none.&lt;br /&gt;
&lt;br /&gt;
I triple checked thinking surely someone had thought of this but no, I found something that someone hadn&#039;t done, a rare thing. &lt;br /&gt;
&lt;br /&gt;
Fast forward to now and OpenJournal is live. Sign in with your Wikipedia log-in, join the community, and start writing!&lt;br /&gt;
&lt;br /&gt;
In time, I&#039;d like this for this to grow and be a hub of blogs that are mirrored and shared far and wide.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s see how far we go.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Main_Page&amp;diff=80</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Main_Page&amp;diff=80"/>
		<updated>2026-09-11T17:55:01Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;oj-hero&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;oj-hero-title&amp;quot;&amp;gt;OpenJournal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-hero-sub&amp;quot;&amp;gt;&lt;br /&gt;
OpenJournal is a fully decentralised blogging/journaling/notetaking ecosystem. &lt;br /&gt;
&lt;br /&gt;
Sign in with your wikipedia login and begin writing. &lt;br /&gt;
&lt;br /&gt;
See our [[OpenJournal:Getting started|Getting started]] guide for more. &lt;br /&gt;
&lt;br /&gt;
Want to write here but host your articles elsewhere? Read our [[OpenJournal:API|API guide]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest news ==&lt;br /&gt;
&lt;br /&gt;
[[OpenJournal:News 1 2026-09-11|OpenJournal now live!]]&lt;br /&gt;
&lt;br /&gt;
== Latest articles ==&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|next=OpenJournal:Latest/2}}&lt;br /&gt;
&lt;br /&gt;
== Everyone writing here ==&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 100&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;span class=&amp;quot;oj-authors&amp;quot;&amp;gt;,&amp;lt;span&amp;gt;[[%PAGE%{{!}}%TITLE%]]&amp;lt;/span&amp;gt;,,&amp;lt;/span&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wanting to help out? ==&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:Helping out]] for a guide on taking backups of the database and general contribution guidelines.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=79</id>
		<title>OpenJournal:API</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=79"/>
		<updated>2026-09-11T16:17:20Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenJournal uses MediaWiki as a backend for all of its content. Anything that is possible on the [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API] is possible here too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== REST API ==&lt;br /&gt;
&lt;br /&gt;
For convenience, OpenJournal abstracts some of the MediaWiki URLs into a more modern RESTful format.&lt;br /&gt;
&lt;br /&gt;
You can see some examples below:&lt;br /&gt;
&lt;br /&gt;
=== Retrieving content ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /users/{username}/posts                     all of a user&#039;s posts, alphabetical by title&lt;br /&gt;
GET /users/{username}/posts/{title}              one post: title, wikitext, last-edited time&lt;br /&gt;
GET /users/{username}/posts/{title}?format=html  the same post, rendered to HTML&lt;br /&gt;
GET /users/{username}                            redirects to their journal (browsable)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{title}&amp;lt;/code&amp;gt; is the part after the slash, with spaces as underscores, e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;/users/Alice/posts/Laying_a_hedge&amp;lt;/code&amp;gt; for&lt;br /&gt;
&amp;lt;code&amp;gt;User:Alice/Laying a hedge&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Traditional API ==&lt;br /&gt;
&lt;br /&gt;
You can still directly call the API in &amp;quot;the MediaWiki way&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here are some examples&lt;br /&gt;
=== All articles by one user (the underlying MediaWiki call) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;list=allpages&amp;amp;apnamespace=2&amp;amp;apprefix=Alice/&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as HTML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as source ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Every article on the site, newest first ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;generator=recentchanges&amp;amp;grcnamespace=2&amp;amp;grclimit=30&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Excerpts and lead images, for a card or a feed ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;prop=extracts|pageimages&amp;amp;exchars=300&amp;amp;explaintext=1&amp;amp;titles=User:Alice/Some_title&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== An Atom feed of everything ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /index.php?title=Special:RecentChanges&amp;amp;feed=atom&amp;amp;namespace=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One author&#039;s feed is the same URL narrowed with &amp;lt;code&amp;gt;&amp;amp;tagfilter=&amp;lt;/code&amp;gt; or, more&lt;br /&gt;
simply, poll &amp;lt;code&amp;gt;list=allpages&amp;lt;/code&amp;gt; above.&lt;br /&gt;
&lt;br /&gt;
=== Writing from your own code ===&lt;br /&gt;
&lt;br /&gt;
See the full parameter reference at [[Special:ApiHelp/query]] to harness the full power of the API.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Main_Page&amp;diff=78</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Main_Page&amp;diff=78"/>
		<updated>2026-09-11T16:12:42Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Capitalise&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;oj-hero&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;oj-hero-title&amp;quot;&amp;gt;OpenJournal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-hero-sub&amp;quot;&amp;gt;&lt;br /&gt;
OpenJournal is a fully decentralised blogging/journaling/notetaking ecosystem. &lt;br /&gt;
&lt;br /&gt;
Sign in with your wikipedia login and begin writing. &lt;br /&gt;
&lt;br /&gt;
See our [[OpenJournal:Getting started|Getting started]] guide for more. &lt;br /&gt;
&lt;br /&gt;
Want to write here but host your articles elsewhere? Read our [[OpenJournal:API|API guide]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest articles ==&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|next=OpenJournal:Latest/2}}&lt;br /&gt;
&lt;br /&gt;
== Everyone writing here ==&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 100&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;span class=&amp;quot;oj-authors&amp;quot;&amp;gt;,&amp;lt;span&amp;gt;[[%PAGE%{{!}}%TITLE%]]&amp;lt;/span&amp;gt;,,&amp;lt;/span&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wanting to help out? ==&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:Helping out]] for a guide on taking backups of the database and general contribution guidelines.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=User:Professorlamp&amp;diff=77</id>
		<title>User:Professorlamp</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=User:Professorlamp&amp;diff=77"/>
		<updated>2026-09-11T16:06:48Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
https://joereynolds.uk/images/climbing/dartmoor-2025/compressed/2025-08-10%2015.35.42_compressed.webp&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
^ That&#039;s me&lt;br /&gt;
&lt;br /&gt;
Here for the good times, trying to make the internet more open. I enjoy guitar a lot, bouldering quite a lot and computers some.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Journal}}&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=76</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=76"/>
		<updated>2026-09-11T16:06:03Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* openjournal -- loaded into MediaWiki:Common.css by the seed step.&lt;br /&gt;
   Edit it on-wiki at /wiki/MediaWiki:Common.css, or here and re-seed.&lt;br /&gt;
&lt;br /&gt;
   Colours are MediaWiki&#039;s Codex design tokens rather than literals, so this&lt;br /&gt;
   file follows the reader&#039;s Light/Dark/Automatic choice without needing a&lt;br /&gt;
   second set of rules. The hex values after each token are the light-mode&lt;br /&gt;
   fallback, used only if a skin does not define the token. */&lt;br /&gt;
&lt;br /&gt;
.oj-hero {&lt;br /&gt;
	padding: 2em 0 1.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-hero-title {&lt;br /&gt;
	font-size: 2.6em;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	color: var( --color-emphasized, #101418 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* One article in a feed. */&lt;br /&gt;
.oj-entry {&lt;br /&gt;
	padding: 0.7em 0;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-entry a {&lt;br /&gt;
	font-size: 1.12em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-byline {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.88em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-journal .oj-feed {&lt;br /&gt;
	margin-top: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-footnote {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The author list is a run of spans; CSS supplies the separators so there is&lt;br /&gt;
   never a trailing one. */&lt;br /&gt;
.oj-authors span + span::before {&lt;br /&gt;
	content: &amp;quot; \00b7 &amp;quot;;&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The &amp;quot;start a new article&amp;quot; box reads as a call to action, not a search field. */&lt;br /&gt;
.oj-journal .inputbox-element {&lt;br /&gt;
	max-width: 26em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------- Dark mode&lt;br /&gt;
&lt;br /&gt;
   Codex&#039;s dark palette puts body text at #eaecf0 and headings at #f8f9fa on a&lt;br /&gt;
   #101418 page: contrast ratios of 15.6:1 and 17.6:1. WCAG AAA asks for 7:1,&lt;br /&gt;
   so that is roughly twice the contrast anyone needs, and on a near-black&lt;br /&gt;
   ground it is where text starts to glow and smear (halation).&lt;br /&gt;
&lt;br /&gt;
   Soften the text and lift the page a little off black. The ratios below stay&lt;br /&gt;
   above AAA, so nothing becomes harder to read:&lt;br /&gt;
&lt;br /&gt;
     headings   #f8f9fa 17.6:1  -&amp;gt;  #dfe3e7 13.7:1&lt;br /&gt;
     body text  #eaecf0 15.6:1  -&amp;gt;  #ccd1d6 11.5:1&lt;br /&gt;
     bylines    #a2a9b1  7.8:1  -&amp;gt;  #9fa6ae  7.2:1&lt;br /&gt;
&lt;br /&gt;
   These override Codex tokens, so everything on the page follows -- article&lt;br /&gt;
   text, the skin&#039;s own chrome and the styles above alike. */&lt;br /&gt;
&lt;br /&gt;
.oj-dark-palette,&lt;br /&gt;
html.skin-theme-clientpref-night {&lt;br /&gt;
	--color-base: #ccd1d6;&lt;br /&gt;
	--color-emphasized: #dfe3e7;&lt;br /&gt;
	--color-subtle: #9fa6ae;&lt;br /&gt;
	--background-color-base: #17191c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The same, for readers on Automatic whose system is set to dark. */&lt;br /&gt;
@media screen and ( prefers-color-scheme: dark ) {&lt;br /&gt;
	html.skin-theme-clientpref-os {&lt;br /&gt;
		--color-base: #ccd1d6;&lt;br /&gt;
		--color-emphasized: #dfe3e7;&lt;br /&gt;
		--color-subtle: #9fa6ae;&lt;br /&gt;
		--background-color-base: #17191c;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* A single external link styled as a button, for the one place that needs it:&lt;br /&gt;
   the database dump on OpenJournal:Helping out. */&lt;br /&gt;
.oj-download {&lt;br /&gt;
	margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	padding: 0.55em 1.1em;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	background: var( --background-color-progressive, #36c );&lt;br /&gt;
	color: var( --color-inverted, #fff );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a:hover {&lt;br /&gt;
	background: var( --background-color-progressive--hover, #4b77d6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-pager {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	margin-top: 1em;&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
	border-top: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Either link can be absent (first or last page). flexbox alone can&#039;t tell&lt;br /&gt;
   &amp;quot;only Older present&amp;quot; from &amp;quot;only Newer present&amp;quot; -- both are a lone&lt;br /&gt;
   first-child -- so the template gives Older its own class to push right. */&lt;br /&gt;
.oj-pager .oj-older {&lt;br /&gt;
	margin-left: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-appearance-landmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Make images respect divs width settings */&lt;br /&gt;
.mw-parser-output img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* The right panel&#039;s &amp;quot;Last modified&amp;quot; link already says this. No config gate&lt;br /&gt;
   exists for the footer&#039;s own copy (unlike Privacy/About/Disclaimers just&lt;br /&gt;
   above, which are disabled the proper way, via their interface messages),&lt;br /&gt;
   so it&#039;s hidden the same way Appearance and the old-look link are. */&lt;br /&gt;
#footer-info-lastmod {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector deliberately gives the page title (h1) and h2 section headings a&lt;br /&gt;
   serif font -- Wikipedia&#039;s own visual identity -- while body text, and&lt;br /&gt;
   even h3-h6, stay sans-serif. Confirmed in skins.vector.styles: the rule&lt;br /&gt;
   is .mw-body h1, .mw-body-content h1/h2 { font-family: &#039;Linux Libertine&#039; ...&lt;br /&gt;
   That split reads as inconsistent here, so headings inherit the body font&lt;br /&gt;
   instead of overriding it -- one font, everywhere, and it stays that way&lt;br /&gt;
   even if the body font ever changes. */&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body .mw-heading1,&lt;br /&gt;
.mw-body-content h1,&lt;br /&gt;
.mw-body-content .mw-heading1,&lt;br /&gt;
.mw-body-content h2,&lt;br /&gt;
.mw-body-content .mw-heading2 {&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=User:Professorlamp&amp;diff=75</id>
		<title>User:Professorlamp</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=User:Professorlamp&amp;diff=75"/>
		<updated>2026-09-11T16:04:44Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here for the good times, trying to make the internet more open. I enjoy guitar a lot, bouldering quite a lot and computers some.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100px;&amp;quot;&amp;gt;&lt;br /&gt;
https://joereynolds.uk/images/climbing/dartmoor-2025/compressed/2025-08-10%2015.35.42_compressed.webp&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Journal}}&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:Getting_started&amp;diff=74</id>
		<title>OpenJournal:Getting started</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:Getting_started&amp;diff=74"/>
		<updated>2026-09-11T15:48:49Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Log in ==&lt;br /&gt;
&lt;br /&gt;
There&#039;s no special sign-up required. Login with the same account you&#039;d use for Wikipedia and you can begin writing.&lt;br /&gt;
&lt;br /&gt;
== Once logged in ==&lt;br /&gt;
&lt;br /&gt;
The first time you log in, OpenJournal creates your journal home for you at&lt;br /&gt;
&#039;&#039;&#039;User:YourName&#039;&#039;&#039;. You can start writing your articles here. All created articles are listed newest first.&lt;br /&gt;
&lt;br /&gt;
== Writing your first article ==&lt;br /&gt;
&lt;br /&gt;
Type a title into the &#039;&#039;&#039;Start a new article&#039;&#039;&#039; box on your journal home and it&#039;ll drop you into a WYSIWYG editor. The editor supports markdown if you prefer though wikitext is significantly more powerful.&lt;br /&gt;
&lt;br /&gt;
Note that image uploads are disabled for cost reasons. Upload them elsewhere and link to them here... Or find us a sponsor, heh.&lt;br /&gt;
&lt;br /&gt;
== What happens when you save ==&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve saved your article, it&#039;ll show up on the front page of OpenJournal. People are free to comment on the article via the discussions tab.&lt;br /&gt;
&lt;br /&gt;
== Embedding OpenJournal content on another site ==&lt;br /&gt;
&lt;br /&gt;
=== Article titles ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fetch(&#039;https://openjournal.wiki/users/JohnSmith/posts&#039;).then(r=&amp;gt;r.json()).then(d=&amp;gt;console.log(d.query.pages.filter(p=&amp;gt;!p.redirect).map(p=&amp;gt;p.title.replace(/^User:[^/]+\//,&#039;&#039;))));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would return&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  &#039;Welcome to OpenJournal!&#039;,&lt;br /&gt;
  &#039;Entr - The file watcher you’ve never heard of&#039;,&lt;br /&gt;
  &amp;quot;You don&#039;t need Vimwiki&amp;quot;,&lt;br /&gt;
  &#039;Linux Audio Production&#039;,&lt;br /&gt;
  &#039;10 minutes with K&#039;&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Article content === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fetch(&#039;https://openjournal.wiki/users/Professorlamp/posts/Welcome_to_OpenJournal!&#039;).then(r=&amp;gt;r.text()).then(t=&amp;gt;console.log(t));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your articles content&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Main_Page&amp;diff=73</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Main_Page&amp;diff=73"/>
		<updated>2026-09-11T13:39:31Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;oj-hero&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;oj-hero-title&amp;quot;&amp;gt;openjournal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-hero-sub&amp;quot;&amp;gt;&lt;br /&gt;
Openjournal is a fully decentralised blogging/journaling/notetaking ecosystem. &lt;br /&gt;
&lt;br /&gt;
Sign in with your wikipedia login and begin writing. &lt;br /&gt;
&lt;br /&gt;
See our [[OpenJournal:Getting started|Getting started]] guide for more. &lt;br /&gt;
&lt;br /&gt;
Want to write here but host your articles elsewhere? Read our [[OpenJournal:API|API guide]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest articles ==&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|next=OpenJournal:Latest/2}}&lt;br /&gt;
&lt;br /&gt;
== Everyone writing here ==&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 100&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;span class=&amp;quot;oj-authors&amp;quot;&amp;gt;,&amp;lt;span&amp;gt;[[%PAGE%{{!}}%TITLE%]]&amp;lt;/span&amp;gt;,,&amp;lt;/span&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wanting to help out? ==&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:Helping out]] for a guide on taking backups of the database and general contribution guidelines.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:Getting_started&amp;diff=72</id>
		<title>OpenJournal:Getting started</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:Getting_started&amp;diff=72"/>
		<updated>2026-09-11T13:38:52Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Created page with &amp;quot;  == Embedding OpenJournal content on another site ==  === Article titles ===  &amp;lt;pre&amp;gt; fetch(&amp;#039;https://openjournal.wiki/users/JohnSmith/posts&amp;#039;).then(r=&amp;gt;r.json()).then(d=&amp;gt;console.log(d.query.pages.filter(p=&amp;gt;!p.redirect).map(p=&amp;gt;p.title.replace(/^User:[^/]+\//,&amp;#039;&amp;#039;)))); &amp;lt;/pre&amp;gt;  Would return &amp;lt;pre&amp;gt; [   &amp;#039;Welcome to OpenJournal!&amp;#039;,   &amp;#039;Entr - The file watcher you’ve never heard of&amp;#039;,   &amp;quot;You don&amp;#039;t need Vimwiki&amp;quot;,   &amp;#039;Linux Audio Production&amp;#039;,   &amp;#039;10 minutes with K&amp;#039; ]  &amp;lt;/pre&amp;gt;  === Article...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Embedding OpenJournal content on another site ==&lt;br /&gt;
&lt;br /&gt;
=== Article titles ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fetch(&#039;https://openjournal.wiki/users/JohnSmith/posts&#039;).then(r=&amp;gt;r.json()).then(d=&amp;gt;console.log(d.query.pages.filter(p=&amp;gt;!p.redirect).map(p=&amp;gt;p.title.replace(/^User:[^/]+\//,&#039;&#039;))));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would return&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  &#039;Welcome to OpenJournal!&#039;,&lt;br /&gt;
  &#039;Entr - The file watcher you’ve never heard of&#039;,&lt;br /&gt;
  &amp;quot;You don&#039;t need Vimwiki&amp;quot;,&lt;br /&gt;
  &#039;Linux Audio Production&#039;,&lt;br /&gt;
  &#039;10 minutes with K&#039;&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Article content === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fetch(&#039;https://openjournal.wiki/users/Professorlamp/posts/Welcome_to_OpenJournal!&#039;).then(r=&amp;gt;r.text()).then(t=&amp;gt;console.log(t));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your articles content&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=MediaWiki:Sidebar&amp;diff=71</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=MediaWiki:Sidebar&amp;diff=71"/>
		<updated>2026-09-11T13:27:22Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|Home&lt;br /&gt;
** Special:MyPage|My journal&lt;br /&gt;
** OpenJournal:Authors|All authors&lt;br /&gt;
** OpenJournal:Latest articles|All articles&lt;br /&gt;
** OpenJournal:Getting started|Getting started&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** OpenJournal:API|API Guide&lt;br /&gt;
** OpenJournal:Helping out|Contributing&lt;br /&gt;
** OpenJournal:FAQ|FAQ&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=70</id>
		<title>OpenJournal:API</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=70"/>
		<updated>2026-09-11T11:53:11Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenJournal uses MediaWiki as a backend for all of its content. Anything that is possible on the [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API] is possible here too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== REST API ==&lt;br /&gt;
&lt;br /&gt;
For convenience, OpenJournal abstracts some of the MediaWiki URLs into a more modern RESTful format.&lt;br /&gt;
&lt;br /&gt;
You can see some examples below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /users/{username}/posts                     all of a user&#039;s posts, alphabetical by title&lt;br /&gt;
GET /users/{username}/posts/{title}              one post: title, wikitext, last-edited time&lt;br /&gt;
GET /users/{username}/posts/{title}?format=html  the same post, rendered to HTML&lt;br /&gt;
GET /users/{username}                            redirects to their journal (browsable)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{title}&amp;lt;/code&amp;gt; is the part after the slash, with spaces as underscores, e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;/users/Alice/posts/Laying_a_hedge&amp;lt;/code&amp;gt; for&lt;br /&gt;
&amp;lt;code&amp;gt;User:Alice/Laying a hedge&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Traditional API ==&lt;br /&gt;
&lt;br /&gt;
You can still directly call the API in &amp;quot;the MediaWiki way&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here are some examples&lt;br /&gt;
=== All articles by one user (the underlying MediaWiki call) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;list=allpages&amp;amp;apnamespace=2&amp;amp;apprefix=Alice/&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as HTML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as source ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Every article on the site, newest first ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;generator=recentchanges&amp;amp;grcnamespace=2&amp;amp;grclimit=30&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Excerpts and lead images, for a card or a feed ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;prop=extracts|pageimages&amp;amp;exchars=300&amp;amp;explaintext=1&amp;amp;titles=User:Alice/Some_title&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== An Atom feed of everything ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /index.php?title=Special:RecentChanges&amp;amp;feed=atom&amp;amp;namespace=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One author&#039;s feed is the same URL narrowed with &amp;lt;code&amp;gt;&amp;amp;tagfilter=&amp;lt;/code&amp;gt; or, more&lt;br /&gt;
simply, poll &amp;lt;code&amp;gt;list=allpages&amp;lt;/code&amp;gt; above.&lt;br /&gt;
&lt;br /&gt;
=== Writing from your own code ===&lt;br /&gt;
&lt;br /&gt;
See the full parameter reference at [[Special:ApiHelp/query]] to harness the full power of the API.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=User:Professorlamp/My_first_post!&amp;diff=69</id>
		<title>User:Professorlamp/My first post!</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=User:Professorlamp/My_first_post!&amp;diff=69"/>
		<updated>2026-09-11T10:50:12Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Professorlamp moved page User:Professorlamp/My first post! to User:Professorlamp/Welcome to OpenJournal!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[User:Professorlamp/Welcome to OpenJournal!]]&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=67</id>
		<title>OpenJournal:FAQ</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=67"/>
		<updated>2026-09-11T10:34:59Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FAQ =&lt;br /&gt;
&lt;br /&gt;
== Why should I use this instead of {popular blogging site}? ==&lt;br /&gt;
&lt;br /&gt;
Other sites will often put your content behind Paywalls (Medium for example) or require a login to view your articles.&lt;br /&gt;
&lt;br /&gt;
If you write your content here, it is free to be viewed by anyone forever.&lt;br /&gt;
&lt;br /&gt;
== Why wouldn&#039;t I just self-host my content? ==&lt;br /&gt;
&lt;br /&gt;
You are welcome to but you miss out on some conveniences that OpenJournal gives to you.&lt;br /&gt;
&lt;br /&gt;
By hosting on here you immediately have:&lt;br /&gt;
&lt;br /&gt;
* Searchable articles&lt;br /&gt;
* Discussions on your articles&lt;br /&gt;
* A Community of other writers&lt;br /&gt;
* An instant audience and front-page coverage&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to maintain or pay for anything.&lt;br /&gt;
&lt;br /&gt;
Besides which, an [[OpenJournal:API|API]] is offered if you wish to write here but display it elsewhere.&lt;br /&gt;
&lt;br /&gt;
== What if OpenJournal goes away? == &lt;br /&gt;
&lt;br /&gt;
OpenJournal, like all MediaWiki based platforms, allow anyone (including you, the reader) to [[OpenJournal:Helping out|take a dump]] of the entire database containing all articles.&lt;br /&gt;
&lt;br /&gt;
Nothing here depends on this site staying up. Anyone is welcome to take a backup and immediately have a working copy of everything that was written here.&lt;br /&gt;
&lt;br /&gt;
This is how Wikipedia, OpenStreetMaps and many other truly free sites operate&lt;br /&gt;
&lt;br /&gt;
== What can I put on here? ==&lt;br /&gt;
&lt;br /&gt;
Anything that you would write in a blog, you can put here. If it&#039;s your own work and text then it&#039;s a good chance it can go here.&lt;br /&gt;
&lt;br /&gt;
== What can&#039;t I put on here? ==&lt;br /&gt;
&lt;br /&gt;
OpenJournal is not a document store. Do not try and skirt around the system by uploading text versions of PDFs or books.&lt;br /&gt;
&lt;br /&gt;
Use common sense and be sensible with your content. &lt;br /&gt;
&lt;br /&gt;
If we detect questionable content, we will reach out to the author via a discussion on the article. If no action is taken, we will be forced to hard delete the content and issue a warning to the author (subsequent warnings may end in account deletion).&lt;br /&gt;
&lt;br /&gt;
Don&#039;t spoil a good thing.&lt;br /&gt;
&lt;br /&gt;
== How can I get a copy of my data? == &lt;br /&gt;
&lt;br /&gt;
Please read [[OpenJournal:Helping out|this page]].&lt;br /&gt;
&lt;br /&gt;
== I admire the ethos, how can I help? ==&lt;br /&gt;
&lt;br /&gt;
Please read [[OpenJournal:Helping out| this page]].&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=66</id>
		<title>OpenJournal:FAQ</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=66"/>
		<updated>2026-09-11T10:33:48Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FAQ =&lt;br /&gt;
&lt;br /&gt;
== Why should I use this instead of {popular blogging site}? ==&lt;br /&gt;
&lt;br /&gt;
Other sites will often put your content behind Paywalls (Medium for example) or require a login to view your articles.&lt;br /&gt;
&lt;br /&gt;
If you write your content here, it is free to be viewed by anyone forever.&lt;br /&gt;
&lt;br /&gt;
== Why wouldn&#039;t I just self-host my content? ==&lt;br /&gt;
&lt;br /&gt;
You are welcome to but you miss out on some conveniences that OpenJournal gives to you.&lt;br /&gt;
&lt;br /&gt;
By hosting on here you immediately have:&lt;br /&gt;
&lt;br /&gt;
* Searchable articles&lt;br /&gt;
* Discussions on your articles&lt;br /&gt;
* A Community of other writers&lt;br /&gt;
* An instant audience and front-page coverage&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to maintain or pay for anything.&lt;br /&gt;
&lt;br /&gt;
Besides which, an [[OpenJournal:API|API]] is offered if you wish to write here but display it elsewhere.&lt;br /&gt;
&lt;br /&gt;
== What if OpenJournal goes away? == &lt;br /&gt;
&lt;br /&gt;
OpenJournal, like all wikis, allow anyone (including you, the reader) to [[OpenJournal:Helping out|take a dump]] of the entire database containing all articles.&lt;br /&gt;
&lt;br /&gt;
Nothing here depends on this site staying up. Anyone is welcome to take a backup and immediately have a working copy of everything that was written here.&lt;br /&gt;
&lt;br /&gt;
This is how Wikipedia, OpenStreetMaps and many other truly free sites operate&lt;br /&gt;
&lt;br /&gt;
== What can I put on here? ==&lt;br /&gt;
&lt;br /&gt;
Anything that you would write in a blog, you can put here. If it&#039;s your own work and text then it&#039;s a good chance it can go here.&lt;br /&gt;
&lt;br /&gt;
== What can&#039;t I put on here? ==&lt;br /&gt;
&lt;br /&gt;
OpenJournal is not a document store. Do not try and skirt around the system by uploading text versions of PDFs or books.&lt;br /&gt;
&lt;br /&gt;
Use common sense and be sensible with your content. &lt;br /&gt;
&lt;br /&gt;
If we detect questionable content, we will reach out to the author via a discussion on the article. If no action is taken, we will be forced to hard delete the content and issue a warning to the author (subsequent warnings may end in account deletion).&lt;br /&gt;
&lt;br /&gt;
Don&#039;t spoil a good thing.&lt;br /&gt;
&lt;br /&gt;
== How can I get a copy of my data? == &lt;br /&gt;
&lt;br /&gt;
Please read [[OpenJournal:Helping out|this page]].&lt;br /&gt;
&lt;br /&gt;
== I admire the ethos, how can I help? ==&lt;br /&gt;
&lt;br /&gt;
Please read [[OpenJournal:Helping out| this page]].&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:Helping_out&amp;diff=65</id>
		<title>OpenJournal:Helping out</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:Helping_out&amp;diff=65"/>
		<updated>2026-09-11T10:28:13Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Contributing and helping ==&lt;br /&gt;
&lt;br /&gt;
OpenJournal is ran by volunteers. It is mostly self sustained and thankfully requires minimal interference.&lt;br /&gt;
&lt;br /&gt;
That said, there are a few ways you can help out:&lt;br /&gt;
&lt;br /&gt;
===  Mirror the website ===&lt;br /&gt;
&lt;br /&gt;
Mirroring the website on a separate host is one of the best things you can do. It decentralises OpenJournal, reduces our server loads and makes everyone&#039;s writings available in more places&lt;br /&gt;
&lt;br /&gt;
=== Take a copy of the website ===&lt;br /&gt;
&lt;br /&gt;
Taking a snapshot of the website at a point in time is helpful for data archiving purposes. The database dump is refreshed daily.&lt;br /&gt;
&lt;br /&gt;
=== Spread the word === &lt;br /&gt;
&lt;br /&gt;
The more people that are aware of and use OpenJournal the better. This will hopefully encourage more mirrors, backups and good will gestures.&lt;br /&gt;
&lt;br /&gt;
== Download the database ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to host this website elsewhere or just keep a copy for your own records, you can do so here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-download&amp;quot;&amp;gt;&lt;br /&gt;
[{{SERVER}}/download/openjournal-latest.xml.gz Download the database dump]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can read more on the inner workings at [https://en.wikipedia.org/wiki/Wikipedia:Database%20download Wikipedia&#039;s database download page]   &lt;br /&gt;
&lt;br /&gt;
== How to import it ==&lt;br /&gt;
&lt;br /&gt;
If you are running your own instance of MediaWiki, you can load it via the interface:&lt;br /&gt;
&lt;br /&gt;
* through the browser, at &#039;&#039;&#039;Special:Import&#039;&#039;&#039; -- or&lt;br /&gt;
* from the command line: &amp;lt;code&amp;gt;php maintenance/run.php importDump openjournal-latest.xml.gz&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=64</id>
		<title>OpenJournal:FAQ</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=64"/>
		<updated>2026-09-11T10:22:25Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FAQ =&lt;br /&gt;
&lt;br /&gt;
== Why should I use this instead of {popular blogging site}? ==&lt;br /&gt;
&lt;br /&gt;
Other sites will often put your content behind Paywalls (Medium for example) or require a login to view your articles.&lt;br /&gt;
&lt;br /&gt;
If you write your content here, it is free to be viewed by anyone forever.&lt;br /&gt;
&lt;br /&gt;
== Why wouldn&#039;t I just self-host my content? ==&lt;br /&gt;
&lt;br /&gt;
You are welcome to but you miss out on some conveniences that OpenJournal gives to you.&lt;br /&gt;
&lt;br /&gt;
By hosting on here you immediately have:&lt;br /&gt;
&lt;br /&gt;
* Searchable articles&lt;br /&gt;
* Discussions on your articles&lt;br /&gt;
* A Community of other writers&lt;br /&gt;
* An instant audience and front-page coverage&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to maintain or pay for anything.&lt;br /&gt;
&lt;br /&gt;
Besides which, an [[OpenJournal:API|API]] is offered if you wish to write here but display it elsewhere.&lt;br /&gt;
&lt;br /&gt;
== What if OpenJournal goes away? == &lt;br /&gt;
&lt;br /&gt;
OpenJournal, like all wikis, allow anyone (including you, the reader) to [[OpenJournal:Helping out|take a dump]] of the entire database containing all articles.&lt;br /&gt;
&lt;br /&gt;
Nothing here depends on this site staying up. Anyone is welcome to take a backup and immediately have a working copy of everything that was written here.&lt;br /&gt;
&lt;br /&gt;
This is how Wikipedia, OpenStreetMaps and many other truly free sites operate&lt;br /&gt;
&lt;br /&gt;
== How can I get a copy of my data? == &lt;br /&gt;
&lt;br /&gt;
Please read [[OpenJournal:Helping out|this page]].&lt;br /&gt;
&lt;br /&gt;
== I admire the ethos, how can I help? ==&lt;br /&gt;
&lt;br /&gt;
Please read [[OpenJournal:Helping out| this page]].&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=63</id>
		<title>OpenJournal:FAQ</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=63"/>
		<updated>2026-09-11T10:21:38Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FAQ =&lt;br /&gt;
&lt;br /&gt;
== Why should I use this instead of {popular blogging site}? ==&lt;br /&gt;
&lt;br /&gt;
Other sites will often put your content behind Paywalls (Medium for example) or require a login to view your articles.&lt;br /&gt;
&lt;br /&gt;
If you write your content here, it is free to be viewed by anyone forever.&lt;br /&gt;
&lt;br /&gt;
== Why wouldn&#039;t I just self-host my content? ==&lt;br /&gt;
&lt;br /&gt;
You are welcome to but you miss out on some conveniences that OpenJournal gives to you.&lt;br /&gt;
&lt;br /&gt;
By hosting on here you immediately have:&lt;br /&gt;
&lt;br /&gt;
* Searchable articles&lt;br /&gt;
* Discussions on your articles&lt;br /&gt;
* A Community of other writers&lt;br /&gt;
* An instant audience and front-page coverage&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to maintain or pay for anything.&lt;br /&gt;
&lt;br /&gt;
Besides which, an [[OpenJournal:API|API]] is offered if you wish to write here but display it elsewhere.&lt;br /&gt;
&lt;br /&gt;
== What if OpenJournal goes away? == &lt;br /&gt;
&lt;br /&gt;
OpenJournal, like all wikis, allow anyone (including you, the reader) to [[OpenJournal:Helping out|take a dump]] of the entire database containing all articles.&lt;br /&gt;
&lt;br /&gt;
Nothing here depends on this site staying up. Anyone is welcome to take a backup and immediately have a working copy of everything that was written here.&lt;br /&gt;
&lt;br /&gt;
This is how Wikipedia, OpenStreetMaps and many other truly free sites operate&lt;br /&gt;
&lt;br /&gt;
== How can I get a copy of my data? == &lt;br /&gt;
&lt;br /&gt;
Please read [[OpenJournal:Helping out|this page]].&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Template:Latest_articles_page&amp;diff=62</id>
		<title>Template:Latest articles page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Template:Latest_articles_page&amp;diff=62"/>
		<updated>2026-09-11T10:16:58Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
One page of the &amp;quot;Latest articles&amp;quot; feed on the front page. Takes a literal, hardcoded&lt;br /&gt;
offset rather than reading one from the URL: DPL&#039;s own offset-caching does not vary&lt;br /&gt;
by query string, so two different offsets requested close together can otherwise&lt;br /&gt;
serve each other&#039;s cached page -- confirmed the hard way, not a hypothetical. A&lt;br /&gt;
handful of separate, ordinary wiki pages, each pinned to its own offset, has no such&lt;br /&gt;
problem, at the cost of being a fixed number of pages rather than infinite scroll.&lt;br /&gt;
&lt;br /&gt;
Parameters: &#039;&#039;&#039;offset&#039;&#039;&#039; (required), &#039;&#039;&#039;prev&#039;&#039;&#039; and &#039;&#039;&#039;next&#039;&#039;&#039; (page titles, omit&lt;br /&gt;
whichever end doesn&#039;t apply), &#039;&#039;&#039;count&#039;&#039;&#039; (articles per page, default 10).&lt;br /&gt;
&lt;br /&gt;
To add a page once there is enough new content: create the next page with&lt;br /&gt;
&amp;lt;code&amp;gt;offset&amp;lt;/code&amp;gt; higher than the last one by however many &amp;lt;code&amp;gt;count&amp;lt;/code&amp;gt; is&lt;br /&gt;
for that feed, point its &amp;lt;code&amp;gt;prev&amp;lt;/code&amp;gt; at the page before it, and set that&lt;br /&gt;
previous page&#039;s &amp;lt;code&amp;gt;next&amp;lt;/code&amp;gt; to the new page.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;oj-feed-page&amp;quot;&amp;gt;&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|titlematch = %/%&lt;br /&gt;
|ordermethod = lastedit&lt;br /&gt;
|order = descending&lt;br /&gt;
|count = {{{count|10}}}&lt;br /&gt;
|offset = {{{offset}}}&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;div class=&amp;quot;oj-feed&amp;quot;&amp;gt;,&amp;lt;div class=&amp;quot;oj-entry&amp;quot;&amp;gt;&#039;&#039;&#039;[[%PAGE%{{!}}%TITLE%]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;span class=&amp;quot;oj-byline&amp;quot;&amp;gt;by [[User:%USER%{{!}}%USER%]] · %DATE%&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;,,&amp;lt;/div&amp;gt;&lt;br /&gt;
|replaceintitle = /^[^\/]*\//,&lt;br /&gt;
|addlasteditor = true&lt;br /&gt;
|addeditdate = true&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
|noresultsheader = &amp;lt;em&amp;gt;No more articles.&amp;lt;/em&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-pager&amp;quot;&amp;gt;{{#if:{{{prev|}}}|&amp;lt;span class=&amp;quot;oj-newer&amp;quot;&amp;gt;[[{{{prev}}}|← Newer articles]]&amp;lt;/span&amp;gt;}}{{#if:{{{next|}}}|&amp;lt;span class=&amp;quot;oj-older&amp;quot;&amp;gt;[[{{{next}}}|Older articles →]]&amp;lt;/span&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Main_Page&amp;diff=61</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Main_Page&amp;diff=61"/>
		<updated>2026-09-11T09:57:07Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;oj-hero&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;oj-hero-title&amp;quot;&amp;gt;openjournal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-hero-sub&amp;quot;&amp;gt;&lt;br /&gt;
Openjournal is a fully decentralised blogging/journaling/notetaking ecosystem. &lt;br /&gt;
&lt;br /&gt;
Sign in with your wikipedia login and begin writing. &lt;br /&gt;
&lt;br /&gt;
Want to write here but host your articles elsewhere? Read our [[OpenJournal:API|API guide]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest articles ==&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|next=OpenJournal:Latest/2}}&lt;br /&gt;
&lt;br /&gt;
== Everyone writing here ==&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 100&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;span class=&amp;quot;oj-authors&amp;quot;&amp;gt;,&amp;lt;span&amp;gt;[[%PAGE%{{!}}%TITLE%]]&amp;lt;/span&amp;gt;,,&amp;lt;/span&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wanting to help out? ==&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:Helping out]] for a guide on taking backups of the database and general contribution guidelines.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=60</id>
		<title>OpenJournal:API</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=60"/>
		<updated>2026-09-11T09:55:52Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenJournal uses MediaWiki as a backend for all of its content. Anything that is possible on the [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API] is possible here too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== REST API ==&lt;br /&gt;
&lt;br /&gt;
For convenience, OpenJournal abstracts some of the MediaWiki URLs into a more modern RESTful format.&lt;br /&gt;
&lt;br /&gt;
You can see some examples below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /users/{username}/posts                     all of a user&#039;s posts, alphabetical by title&lt;br /&gt;
GET /users/{username}/posts/{title}              one post: title, wikitext, last-edited time&lt;br /&gt;
GET /users/{username}/posts/{title}?format=html  the same post, rendered to HTML&lt;br /&gt;
GET /users/{username}                            redirects to their journal (browsable)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{title}&amp;lt;/code&amp;gt; is the part after the slash, with spaces as underscores, e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;/users/Alice/posts/Laying_a_hedge&amp;lt;/code&amp;gt; for&lt;br /&gt;
&amp;lt;code&amp;gt;User:Alice/Laying a hedge&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Traditional API ==&lt;br /&gt;
&lt;br /&gt;
You can still directly call the API in &amp;quot;the MediaWiki way&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here are some examples&lt;br /&gt;
=== All articles by one user (the underlying MediaWiki call) ===&lt;br /&gt;
&lt;br /&gt;
Same data the &amp;lt;code&amp;gt;/users/{username}/posts&amp;lt;/code&amp;gt; route above returns, and where&lt;br /&gt;
its extra parameters -- excerpts, URLs -- come from, if you want to add your own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;list=allpages&amp;amp;apnamespace=2&amp;amp;apprefix=Alice/&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as HTML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as source ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Every article on the site, newest first ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;generator=recentchanges&amp;amp;grcnamespace=2&amp;amp;grclimit=30&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Excerpts and lead images, for a card or a feed ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;prop=extracts|pageimages&amp;amp;exchars=300&amp;amp;explaintext=1&amp;amp;titles=User:Alice/Some_title&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== An Atom feed of everything ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /index.php?title=Special:RecentChanges&amp;amp;feed=atom&amp;amp;namespace=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One author&#039;s feed is the same URL narrowed with &amp;lt;code&amp;gt;&amp;amp;tagfilter=&amp;lt;/code&amp;gt; or, more&lt;br /&gt;
simply, poll &amp;lt;code&amp;gt;list=allpages&amp;lt;/code&amp;gt; above.&lt;br /&gt;
&lt;br /&gt;
=== Writing from your own code ===&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:API/Recipes]] for worked examples, or the full parameter reference&lt;br /&gt;
at [[Special:ApiHelp/query]] — it is generated from this wiki&#039;s own installed modules,&lt;br /&gt;
so it is never out of date.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=MediaWiki:Openjournal-write-in-your-journal&amp;diff=59</id>
		<title>MediaWiki:Openjournal-write-in-your-journal</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=MediaWiki:Openjournal-write-in-your-journal&amp;diff=59"/>
		<updated>2026-09-11T09:50:10Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of OpenJournal is not a page anyone can write in - the front page,&lt;br /&gt;
templates and site documentation are looked after by the site&#039;s maintainers.&lt;br /&gt;
&lt;br /&gt;
Your own writing goes in your journal, at &amp;lt;code&amp;gt;User:&#039;&#039;You&#039;&#039;/&#039;&#039;Title&#039;&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Head to [[Special:MyPage|your journal]] to start an article, and use the&lt;br /&gt;
&#039;&#039;&#039;Discussion&#039;&#039;&#039; tab if you want to raise something about this page.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:Authors&amp;diff=58</id>
		<title>OpenJournal:Authors</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:Authors&amp;diff=58"/>
		<updated>2026-09-11T09:49:35Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Everyone who writes on OpenJournal. Follow a name to read their journal.&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 200&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;div class=&amp;quot;oj-feed&amp;quot;&amp;gt;,&amp;lt;div class=&amp;quot;oj-entry&amp;quot;&amp;gt;&#039;&#039;&#039;[[%PAGE%{{!}}%TITLE%]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;,,&amp;lt;/div&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
|noresultsheader = &amp;lt;em&amp;gt;Nobody has started a journal yet.&amp;lt;/em&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-footnote&amp;quot;&amp;gt;&lt;br /&gt;
A journal appears here once its author has created their&lt;br /&gt;
[[Special:MyPage|journal home]]. To browse every page instead, including each&lt;br /&gt;
individual article, see [[Special:PrefixIndex/User:|the full index]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=User:Professorlamp/10_minutes_with_K&amp;diff=57</id>
		<title>User:Professorlamp/10 minutes with K</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=User:Professorlamp/10_minutes_with_K&amp;diff=57"/>
		<updated>2026-09-11T09:47:26Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Created page with &amp;quot;= What is K/Kona? = K is an array programming language much like J, APL, A and others. Kona is the open source equivalent of this, Kona strives to be a truthful representation of K rather than an extension or competitor.  From now on I’ll be talking about Kona, but all the examples that work in Kona, also work in K.  On to the code!  == A whirlwind tour == Nearly everything in Kona is an array. Let’s define a variable &amp;lt;code&amp;gt;numbers&amp;lt;/code&amp;gt; that holds the numbers 0 thr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is K/Kona? =&lt;br /&gt;
K is an array programming language much like J, APL, A and others. Kona is the open source equivalent of this, Kona strives to be a truthful representation of K rather than an extension or competitor.&lt;br /&gt;
&lt;br /&gt;
From now on I’ll be talking about Kona, but all the examples that work in Kona, also work in K.&lt;br /&gt;
&lt;br /&gt;
On to the code!&lt;br /&gt;
&lt;br /&gt;
== A whirlwind tour ==&lt;br /&gt;
Nearly everything in Kona is an array. Let’s define a variable &amp;lt;code&amp;gt;numbers&amp;lt;/code&amp;gt; that holds the numbers 0 through 9&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;numbers: 0 1 2 3 4 5 6 7 8 9&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is a quicker way with the monadic(takes one argument) enumerate(!) function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;numbers: !10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let’s reverse that list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|numbers&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;9 8 7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|!10&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;9 8 7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most functions change their meaning depending on the amount of arguments given. For instance, that enumerate function above is a modulus operator when given two arguments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;5 ! 2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Most functions are monadic and dyadic, i.e. they can take 1 or 2 arguments, but some can take up to 4 different arguments. It can actually get even more complex, some functions operate differently depending on if their arguments are atoms or lists.)&lt;br /&gt;
&lt;br /&gt;
Let’s take our first steps to programmerhood&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;greeting: &amp;quot;Hello, world!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
How long is this string?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#greeting&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
` 13`&lt;br /&gt;
&lt;br /&gt;
What’s the first letter?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;greeting[0]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
` “H”`&lt;br /&gt;
&lt;br /&gt;
Or the more idiomatic ‘K’ way, using the ‘first’ monadic function&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;*greeting&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
` “H”`&lt;br /&gt;
&lt;br /&gt;
What’s the last letter?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;*|greeting&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read that as, take the first(*) letter from the reversed(|) string.&lt;br /&gt;
&lt;br /&gt;
Hide dupes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;? greeting&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;Helo, wrd!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More index trickery&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;greeting[7 8 7]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;wow&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That gets the 7th index of the string, then the 8th, and then the 7th again.&lt;br /&gt;
&lt;br /&gt;
Let’s generate some random numbers. How about 20 numbers in the range 0-99?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;random: 20 ? 100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
` 30 25 69 86 66 79 47 96 52 21 31 54 96 89 22 76 91 36 78 70`&lt;br /&gt;
&lt;br /&gt;
Which ones are greater than 50?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;random &amp;gt; 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
` 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1`&lt;br /&gt;
&lt;br /&gt;
Hmm, that’s not very helpful… I need the indices of those.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp; random &amp;gt; 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;3 4 5 7 8 11 12 13 15 16 18 19&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nice, now I can finally get them!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;random[&amp;amp; random &amp;gt; 50]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;69 86 66 79 96 52 54 96 89 76 91 78 70&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hmm, too many, I only need 5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;5 # random[&amp;amp; random &amp;gt; 50]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;69 86 66 79 96&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Much better.&lt;br /&gt;
&lt;br /&gt;
Let’s take a step back and breathe… Done? Okay&lt;br /&gt;
&lt;br /&gt;
Dictionaries:&lt;br /&gt;
 &amp;lt;code&amp;gt;dict[`a]: &amp;quot;shake&amp;quot;&lt;br /&gt;
 dict[`b]: &amp;quot;your&amp;quot;&lt;br /&gt;
 dict[`c]: &amp;quot;booty&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 dict[`a `a `a]&lt;br /&gt;
   (&amp;quot;shake&amp;quot;&lt;br /&gt;
   &amp;quot;shake&amp;quot;&lt;br /&gt;
   &amp;quot;shake&amp;quot;)&lt;br /&gt;
 dict[`a `a `a]&lt;br /&gt;
   (&amp;quot;shake&amp;quot;&lt;br /&gt;
   &amp;quot;shake&amp;quot;&lt;br /&gt;
   &amp;quot;shake&amp;quot;)&lt;br /&gt;
 dict[`a `b `c]&lt;br /&gt;
   (&amp;quot;shake&amp;quot;&lt;br /&gt;
   &amp;quot;your&amp;quot;&lt;br /&gt;
   &amp;quot;booty&amp;quot;)&lt;br /&gt;
 dict[`a `b `c]&lt;br /&gt;
   (&amp;quot;shake&amp;quot;&lt;br /&gt;
   &amp;quot;your&amp;quot;&lt;br /&gt;
   &amp;quot;booty&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
Functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addOne: {x + 1}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addOne 6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With multiple arguments:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addBoth: {[x;y] x + y}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addBoth[5;6]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;11&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works on lists too&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addBoth[5 12; 2 2]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;7 14&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;5 + 5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;5 + 10 20 30&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15 25 35&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;5 6 7 + 10 20 30&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15 26 37&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let’s do some Euler (spoilers ahead for problem 1).&amp;lt;blockquote&amp;gt;If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.&amp;lt;/blockquote&amp;gt;Gather the numbers&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;n: !1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which ones are multiples of 5?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;n[&amp;amp; (n!5) = 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
How about 3?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;n[&amp;amp; (n!3) = 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;n[&amp;amp; ((n!3) = 0) | ((n!5) = 0)]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Store it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;multiples: n[&amp;amp; ((n!3) = 0) | ((n!5) = 0)]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sum it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;+/ multiples&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voila&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;multiples&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
233168&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Looking past the terse syntax of Kona, I find it to be amazingly expressive and makes me think much more about the actual problem at hand.&lt;br /&gt;
&lt;br /&gt;
Everything is composable and polymorphic, it all ‘just works’.&lt;br /&gt;
&lt;br /&gt;
If you want to get started writing in Kona, then head over to the Github page and clone the repo.&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
The best documentation I’ve found for K/Kona is the K User and Reference Manual. They’re very well written and thoroughly documented.&lt;br /&gt;
&lt;br /&gt;
K user manual https://web.archive.org/web/20041022042401/http://www.kx.com/technical/documents/kusrlite.pdf&lt;br /&gt;
&lt;br /&gt;
K reference manual https://web.archive.org/web/20050111142057/http://www.kx.com/technical/documents/kreflite.pdf&lt;br /&gt;
&lt;br /&gt;
There’s also Kona’s wiki for a more casual read https://github.com/kevinlawler/kona/wiki&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=56</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=56"/>
		<updated>2026-09-11T09:45:32Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* openjournal -- loaded into MediaWiki:Common.css by the seed step.&lt;br /&gt;
   Edit it on-wiki at /wiki/MediaWiki:Common.css, or here and re-seed.&lt;br /&gt;
&lt;br /&gt;
   Colours are MediaWiki&#039;s Codex design tokens rather than literals, so this&lt;br /&gt;
   file follows the reader&#039;s Light/Dark/Automatic choice without needing a&lt;br /&gt;
   second set of rules. The hex values after each token are the light-mode&lt;br /&gt;
   fallback, used only if a skin does not define the token. */&lt;br /&gt;
&lt;br /&gt;
.oj-hero {&lt;br /&gt;
	padding: 2em 0 1.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-hero-title {&lt;br /&gt;
	font-size: 2.6em;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	color: var( --color-emphasized, #101418 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* One article in a feed. */&lt;br /&gt;
.oj-entry {&lt;br /&gt;
	padding: 0.7em 0;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-entry a {&lt;br /&gt;
	font-size: 1.12em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-byline {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.88em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-journal .oj-feed {&lt;br /&gt;
	margin-top: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-footnote {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The author list is a run of spans; CSS supplies the separators so there is&lt;br /&gt;
   never a trailing one. */&lt;br /&gt;
.oj-authors span + span::before {&lt;br /&gt;
	content: &amp;quot; \00b7 &amp;quot;;&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The &amp;quot;start a new article&amp;quot; box reads as a call to action, not a search field. */&lt;br /&gt;
.oj-journal .inputbox-element {&lt;br /&gt;
	max-width: 26em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------- Dark mode&lt;br /&gt;
&lt;br /&gt;
   Codex&#039;s dark palette puts body text at #eaecf0 and headings at #f8f9fa on a&lt;br /&gt;
   #101418 page: contrast ratios of 15.6:1 and 17.6:1. WCAG AAA asks for 7:1,&lt;br /&gt;
   so that is roughly twice the contrast anyone needs, and on a near-black&lt;br /&gt;
   ground it is where text starts to glow and smear (halation).&lt;br /&gt;
&lt;br /&gt;
   Soften the text and lift the page a little off black. The ratios below stay&lt;br /&gt;
   above AAA, so nothing becomes harder to read:&lt;br /&gt;
&lt;br /&gt;
     headings   #f8f9fa 17.6:1  -&amp;gt;  #dfe3e7 13.7:1&lt;br /&gt;
     body text  #eaecf0 15.6:1  -&amp;gt;  #ccd1d6 11.5:1&lt;br /&gt;
     bylines    #a2a9b1  7.8:1  -&amp;gt;  #9fa6ae  7.2:1&lt;br /&gt;
&lt;br /&gt;
   These override Codex tokens, so everything on the page follows -- article&lt;br /&gt;
   text, the skin&#039;s own chrome and the styles above alike. */&lt;br /&gt;
&lt;br /&gt;
.oj-dark-palette,&lt;br /&gt;
html.skin-theme-clientpref-night {&lt;br /&gt;
	--color-base: #ccd1d6;&lt;br /&gt;
	--color-emphasized: #dfe3e7;&lt;br /&gt;
	--color-subtle: #9fa6ae;&lt;br /&gt;
	--background-color-base: #17191c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The same, for readers on Automatic whose system is set to dark. */&lt;br /&gt;
@media screen and ( prefers-color-scheme: dark ) {&lt;br /&gt;
	html.skin-theme-clientpref-os {&lt;br /&gt;
		--color-base: #ccd1d6;&lt;br /&gt;
		--color-emphasized: #dfe3e7;&lt;br /&gt;
		--color-subtle: #9fa6ae;&lt;br /&gt;
		--background-color-base: #17191c;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* A single external link styled as a button, for the one place that needs it:&lt;br /&gt;
   the database dump on OpenJournal:Helping out. */&lt;br /&gt;
.oj-download {&lt;br /&gt;
	margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	padding: 0.55em 1.1em;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	background: var( --background-color-progressive, #36c );&lt;br /&gt;
	color: var( --color-inverted, #fff );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a:hover {&lt;br /&gt;
	background: var( --background-color-progressive--hover, #4b77d6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MediaWiki marks every external link with a small icon by default; it reads&lt;br /&gt;
   oddly against a button. */&lt;br /&gt;
.oj-download a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Prev/next links at the bottom of each page of the front-page feed. */&lt;br /&gt;
.oj-pager {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	margin-top: 1em;&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
	border-top: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Either link can be absent (first or last page). flexbox alone can&#039;t tell&lt;br /&gt;
   &amp;quot;only Older present&amp;quot; from &amp;quot;only Newer present&amp;quot; -- both are a lone&lt;br /&gt;
   first-child -- so the template gives Older its own class to push right. */&lt;br /&gt;
.oj-pager .oj-older {&lt;br /&gt;
	margin-left: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Appearance (theme/font-size/width) is removed from every page rather than&lt;br /&gt;
   relocated -- Vector wires it into the right column with no config to move&lt;br /&gt;
   it, and Special:Preferences already has a real, working &amp;quot;Color&amp;quot; setting&lt;br /&gt;
   under Appearance, so nothing is lost for anyone with an account; readers&lt;br /&gt;
   without one still get the site&#039;s OJ_DEFAULT_THEME default. */&lt;br /&gt;
.vector-appearance-landmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;quot;Switch to old look&amp;quot; (legacy Vector opt-out), shown to logged-in users at&lt;br /&gt;
   the bottom of the left menu. Vector hardcodes this with no config flag to&lt;br /&gt;
   turn it off -- confirmed by rendering the component directly rather than&lt;br /&gt;
   guessing from the template -- so it&#039;s removed the same way as Appearance. */&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The right panel&#039;s &amp;quot;Last modified&amp;quot; link already says this. No config gate&lt;br /&gt;
   exists for the footer&#039;s own copy (unlike Privacy/About/Disclaimers just&lt;br /&gt;
   above, which are disabled the proper way, via their interface messages),&lt;br /&gt;
   so it&#039;s hidden the same way Appearance and the old-look link are. */&lt;br /&gt;
#footer-info-lastmod {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector deliberately gives the page title (h1) and h2 section headings a&lt;br /&gt;
   serif font -- Wikipedia&#039;s own visual identity -- while body text, and&lt;br /&gt;
   even h3-h6, stay sans-serif. Confirmed in skins.vector.styles: the rule&lt;br /&gt;
   is .mw-body h1, .mw-body-content h1/h2 { font-family: &#039;Linux Libertine&#039; ...&lt;br /&gt;
   That split reads as inconsistent here, so headings inherit the body font&lt;br /&gt;
   instead of overriding it -- one font, everywhere, and it stays that way&lt;br /&gt;
   even if the body font ever changes. */&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body .mw-heading1,&lt;br /&gt;
.mw-body-content h1,&lt;br /&gt;
.mw-body-content .mw-heading1,&lt;br /&gt;
.mw-body-content h2,&lt;br /&gt;
.mw-body-content .mw-heading2 {&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:Helping_out&amp;diff=55</id>
		<title>OpenJournal:Helping out</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:Helping_out&amp;diff=55"/>
		<updated>2026-09-11T09:43:06Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Download the database ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to host this website elsewhere or just keep a copy for your own records, you can do so here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-download&amp;quot;&amp;gt;&lt;br /&gt;
[{{SERVER}}/download/openjournal-latest.xml.gz Download the database dump]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can read more on the inner workings at [https://en.wikipedia.org/wiki/Wikipedia:Database%20download Wikipedia&#039;s database download page]   &lt;br /&gt;
&lt;br /&gt;
== How to import it ==&lt;br /&gt;
&lt;br /&gt;
If you are running your own instance of MediaWiki, you can load it via the interface:&lt;br /&gt;
&lt;br /&gt;
* through the browser, at &#039;&#039;&#039;Special:Import&#039;&#039;&#039; -- or&lt;br /&gt;
* from the command line: &amp;lt;code&amp;gt;php maintenance/run.php importDump openjournal-latest.xml.gz&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=54</id>
		<title>OpenJournal:API</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=54"/>
		<updated>2026-09-11T09:36:59Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;openjournal uses MediaWiki as a backend for all of its content. Anything that is possible on the [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API] is possible here too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== REST API ==&lt;br /&gt;
&lt;br /&gt;
For convenience, OpenJournal abstracts some of the MediaWiki URLs into a more modern RESTful format.&lt;br /&gt;
&lt;br /&gt;
You can see some examples below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /users/{username}/posts                     all of a user&#039;s posts, alphabetical by title&lt;br /&gt;
GET /users/{username}/posts/{title}              one post: title, wikitext, last-edited time&lt;br /&gt;
GET /users/{username}/posts/{title}?format=html  the same post, rendered to HTML&lt;br /&gt;
GET /users/{username}                            redirects to their journal (browsable)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{title}&amp;lt;/code&amp;gt; is the part after the slash, with spaces as underscores, e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;/users/Alice/posts/Laying_a_hedge&amp;lt;/code&amp;gt; for&lt;br /&gt;
&amp;lt;code&amp;gt;User:Alice/Laying a hedge&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Traditional API ==&lt;br /&gt;
&lt;br /&gt;
You can still directly call the API in &amp;quot;the MediaWiki way&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here are some examples&lt;br /&gt;
=== All articles by one user (the underlying MediaWiki call) ===&lt;br /&gt;
&lt;br /&gt;
Same data the &amp;lt;code&amp;gt;/users/{username}/posts&amp;lt;/code&amp;gt; route above returns, and where&lt;br /&gt;
its extra parameters -- excerpts, URLs -- come from, if you want to add your own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;list=allpages&amp;amp;apnamespace=2&amp;amp;apprefix=Alice/&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as HTML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One article, as source ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Every article on the site, newest first ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;generator=recentchanges&amp;amp;grcnamespace=2&amp;amp;grclimit=30&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Excerpts and lead images, for a card or a feed ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;prop=extracts|pageimages&amp;amp;exchars=300&amp;amp;explaintext=1&amp;amp;titles=User:Alice/Some_title&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== An Atom feed of everything ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /index.php?title=Special:RecentChanges&amp;amp;feed=atom&amp;amp;namespace=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One author&#039;s feed is the same URL narrowed with &amp;lt;code&amp;gt;&amp;amp;tagfilter=&amp;lt;/code&amp;gt; or, more&lt;br /&gt;
simply, poll &amp;lt;code&amp;gt;list=allpages&amp;lt;/code&amp;gt; above.&lt;br /&gt;
&lt;br /&gt;
=== Writing from your own code ===&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:API/Recipes]] for worked examples, or the full parameter reference&lt;br /&gt;
at [[Special:ApiHelp/query]] — it is generated from this wiki&#039;s own installed modules,&lt;br /&gt;
so it is never out of date.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=53</id>
		<title>OpenJournal:FAQ</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=53"/>
		<updated>2026-09-11T09:35:11Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FAQ =&lt;br /&gt;
&lt;br /&gt;
== Why should I use this instead of {popular blogging site}? ==&lt;br /&gt;
&lt;br /&gt;
Other sites will often put your content behind Paywalls (Medium for example) or require login to view your articles.&lt;br /&gt;
&lt;br /&gt;
If you write your content here, it is free to be viewed by anyone forever.&lt;br /&gt;
&lt;br /&gt;
== Why wouldn&#039;t I just self-host my content? ==&lt;br /&gt;
&lt;br /&gt;
You are welcome to but you miss out on some conveniences that OpenJournal gives to you.&lt;br /&gt;
&lt;br /&gt;
By hosting on here you immediately have:&lt;br /&gt;
&lt;br /&gt;
* Searchable articles&lt;br /&gt;
* Discussions on your articles&lt;br /&gt;
* A Community of other writers&lt;br /&gt;
* An instant audience and front-page coverage&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to maintain or pay for anything.&lt;br /&gt;
&lt;br /&gt;
Besides which, an [[OpenJournal:API|API]] is offered if you wish to write here but display it elsewhere.&lt;br /&gt;
&lt;br /&gt;
== What if OpenJournal goes away? == &lt;br /&gt;
&lt;br /&gt;
OpenJournal, like all wikis, allow anyone (including you, the reader) to [[OpenJournal:Helping out|take a dump]] of the entire database containing all articles.&lt;br /&gt;
&lt;br /&gt;
Nothing here depends on this site staying up. Anyone is welcome to take a dump and immediately have a working copy of everything that was written here.&lt;br /&gt;
&lt;br /&gt;
This is how Wikipedia, OpenStreetMaps and many other truly free sites operate&lt;br /&gt;
&lt;br /&gt;
== How can I get a copy of my data? == &lt;br /&gt;
&lt;br /&gt;
Please read [[OpenJournal:Helping out|this page]].&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=52</id>
		<title>OpenJournal:FAQ</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=52"/>
		<updated>2026-09-11T09:06:41Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FAQ =&lt;br /&gt;
&lt;br /&gt;
== Why should I use this instead of {popular blogging site}? ==&lt;br /&gt;
&lt;br /&gt;
Other sites will often put your content behind Paywalls (Medium for example) or require login to view your articles.&lt;br /&gt;
&lt;br /&gt;
If you write your content here, it is free to be viewed by anyone forever.&lt;br /&gt;
&lt;br /&gt;
== Why wouldn&#039;t I just self-host my site? ==&lt;br /&gt;
&lt;br /&gt;
You are welcome to but you miss out on some conveniences that OpenJournal gives to you.&lt;br /&gt;
&lt;br /&gt;
By hosting on here you immediately have:&lt;br /&gt;
&lt;br /&gt;
* Searchable articles&lt;br /&gt;
* Discussions on your articles&lt;br /&gt;
* An instant audience and front-page coverage&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to maintain or pay for anything.&lt;br /&gt;
&lt;br /&gt;
Besides which, an [[OpenJournal:API|API]] is offered if you wish to write here but display it elsewhere.&lt;br /&gt;
&lt;br /&gt;
== What if OpenJournal goes away? == &lt;br /&gt;
&lt;br /&gt;
OpenJournal, like all wikis, allow anyone (including you, the reader) to [[OpenJournal:Helping out|take a dump]] of the entire database containing all articles.&lt;br /&gt;
&lt;br /&gt;
Nothing here depends on this site staying up. Anyone is welcome to take a dump and immediately have a working copy of everything that was written here.&lt;br /&gt;
&lt;br /&gt;
This is how Wikipedia, OpenStreetMaps and many other truly free sites operate&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=51</id>
		<title>OpenJournal:FAQ</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:FAQ&amp;diff=51"/>
		<updated>2026-09-11T08:57:42Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: Created page with &amp;quot;= FAQ =  == Why should I use this instead of {popular blogging site}? ==  Other sites will often put your content behind Paywalls (Medium for example) or require login to view your articles.  If you write your content here, it is free to be viewed by anyone forever.  == What if OpenJournal goes away? ==   OpenJournal, like all wikis allow anyone (including you, the reader) to take a dump of the entire database containing all articles.  Nothing...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FAQ =&lt;br /&gt;
&lt;br /&gt;
== Why should I use this instead of {popular blogging site}? ==&lt;br /&gt;
&lt;br /&gt;
Other sites will often put your content behind Paywalls (Medium for example) or require login to view your articles.&lt;br /&gt;
&lt;br /&gt;
If you write your content here, it is free to be viewed by anyone forever.&lt;br /&gt;
&lt;br /&gt;
== What if OpenJournal goes away? == &lt;br /&gt;
&lt;br /&gt;
OpenJournal, like all wikis allow anyone (including you, the reader) to [[OpenJournal:Helping out|take a dump]] of the entire database containing all articles.&lt;br /&gt;
&lt;br /&gt;
Nothing here depends on this site staying up. Anyone is welcome to take a dump and immediately have a working copy of everything that was written here.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=50</id>
		<title>OpenJournal:API</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:API&amp;diff=50"/>
		<updated>2026-09-11T08:46:21Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;openjournal uses MediaWiki as a backend for all of its content. Anything that is possible on the [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API] is possible here too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== REST API ==&lt;br /&gt;
&lt;br /&gt;
For convenience, OpenJournal abstracts some of the MediaWiki URLs into a more modern RESTful format.&lt;br /&gt;
&lt;br /&gt;
You can see some examples below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /users/{username}/posts                     all of a user&#039;s posts, alphabetical by title&lt;br /&gt;
GET /users/{username}/posts/{title}              one post: title, wikitext, last-edited time&lt;br /&gt;
GET /users/{username}/posts/{title}?format=html  the same post, rendered to HTML&lt;br /&gt;
GET /users/{username}                            redirects to their journal (browsable)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{title}&amp;lt;/code&amp;gt; is the part after the slash, with spaces as underscores, e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;/users/Alice/posts/Laying_a_hedge&amp;lt;/code&amp;gt; for&lt;br /&gt;
&amp;lt;code&amp;gt;User:Alice/Laying a hedge&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== All articles by one user (the underlying MediaWiki call) ==&lt;br /&gt;
&lt;br /&gt;
Same data the &amp;lt;code&amp;gt;/users/{username}/posts&amp;lt;/code&amp;gt; route above returns, and where&lt;br /&gt;
its extra parameters -- excerpts, URLs -- come from, if you want to add your own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;list=allpages&amp;amp;apnamespace=2&amp;amp;apprefix=Alice/&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== One article, as HTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== One article, as source ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /rest.php/v1/page/User%3AAlice%2FSome_title&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Every article on the site, newest first ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;generator=recentchanges&amp;amp;grcnamespace=2&amp;amp;grclimit=30&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Excerpts and lead images, for a card or a feed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api.php?action=query&amp;amp;prop=extracts|pageimages&amp;amp;exchars=300&amp;amp;explaintext=1&amp;amp;titles=User:Alice/Some_title&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An Atom feed of everything ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /index.php?title=Special:RecentChanges&amp;amp;feed=atom&amp;amp;namespace=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One author&#039;s feed is the same URL narrowed with &amp;lt;code&amp;gt;&amp;amp;tagfilter=&amp;lt;/code&amp;gt; or, more&lt;br /&gt;
simply, poll &amp;lt;code&amp;gt;list=allpages&amp;lt;/code&amp;gt; above.&lt;br /&gt;
&lt;br /&gt;
== Writing from your own code ==&lt;br /&gt;
&lt;br /&gt;
See [[OpenJournal:API/Recipes]] for worked examples, or the full parameter reference&lt;br /&gt;
at [[Special:ApiHelp/query]] — it is generated from this wiki&#039;s own installed modules,&lt;br /&gt;
so it is never out of date.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=MediaWiki:Sidebar&amp;diff=49</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=MediaWiki:Sidebar&amp;diff=49"/>
		<updated>2026-09-11T08:43:12Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|Home&lt;br /&gt;
** Special:MyPage|My journal&lt;br /&gt;
** OpenJournal:Authors|All authors&lt;br /&gt;
** OpenJournal:Latest articles|All articles&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** OpenJournal:API|API Guide&lt;br /&gt;
** OpenJournal:Helping out|Contributing&lt;br /&gt;
** OpenJournal:FAQ|FAQ&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Main_Page&amp;diff=48</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Main_Page&amp;diff=48"/>
		<updated>2026-09-11T08:41:43Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;oj-hero&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;oj-hero-title&amp;quot;&amp;gt;openjournal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-hero-sub&amp;quot;&amp;gt;&lt;br /&gt;
Openjournal is a fully decentralised blogging/journaling/notetaking ecosystem. &lt;br /&gt;
&lt;br /&gt;
Sign in with your wikipedia login and begin writing. &lt;br /&gt;
&lt;br /&gt;
Want to write here but host your articles elsewhere? Read our [[OpenJournal:API|API guide]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest articles ==&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|next=OpenJournal:Latest/2}}&lt;br /&gt;
&lt;br /&gt;
== Everyone writing here ==&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 100&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;span class=&amp;quot;oj-authors&amp;quot;&amp;gt;,&amp;lt;span&amp;gt;[[%PAGE%{{!}}%TITLE%]]&amp;lt;/span&amp;gt;,,&amp;lt;/span&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wanting to help out? ==&lt;br /&gt;
&lt;br /&gt;
openjournal is nothing but MediaWiki underneath, which means everything on it can&lt;br /&gt;
leave with you -- see [[OpenJournal:Helping out]] for a database dump you can&lt;br /&gt;
download and load into a wiki of your own.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=47</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=47"/>
		<updated>2026-09-11T08:41:05Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* openjournal -- loaded into MediaWiki:Common.css by the seed step.&lt;br /&gt;
   Edit it on-wiki at /wiki/MediaWiki:Common.css, or here and re-seed.&lt;br /&gt;
&lt;br /&gt;
   Colours are MediaWiki&#039;s Codex design tokens rather than literals, so this&lt;br /&gt;
   file follows the reader&#039;s Light/Dark/Automatic choice without needing a&lt;br /&gt;
   second set of rules. The hex values after each token are the light-mode&lt;br /&gt;
   fallback, used only if a skin does not define the token. */&lt;br /&gt;
&lt;br /&gt;
.oj-hero {&lt;br /&gt;
	margin: 0 0 1.5em;&lt;br /&gt;
	padding: 2em 0 1.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-subtle, #c8ccd1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-hero-title {&lt;br /&gt;
	font-size: 2.6em;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	color: var( --color-emphasized, #101418 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* One article in a feed. */&lt;br /&gt;
.oj-entry {&lt;br /&gt;
	padding: 0.7em 0;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-entry a {&lt;br /&gt;
	font-size: 1.12em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-byline {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.88em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-journal .oj-feed {&lt;br /&gt;
	margin-top: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-footnote {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The author list is a run of spans; CSS supplies the separators so there is&lt;br /&gt;
   never a trailing one. */&lt;br /&gt;
.oj-authors span + span::before {&lt;br /&gt;
	content: &amp;quot; \00b7 &amp;quot;;&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The &amp;quot;start a new article&amp;quot; box reads as a call to action, not a search field. */&lt;br /&gt;
.oj-journal .inputbox-element {&lt;br /&gt;
	max-width: 26em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------- Dark mode&lt;br /&gt;
&lt;br /&gt;
   Codex&#039;s dark palette puts body text at #eaecf0 and headings at #f8f9fa on a&lt;br /&gt;
   #101418 page: contrast ratios of 15.6:1 and 17.6:1. WCAG AAA asks for 7:1,&lt;br /&gt;
   so that is roughly twice the contrast anyone needs, and on a near-black&lt;br /&gt;
   ground it is where text starts to glow and smear (halation).&lt;br /&gt;
&lt;br /&gt;
   Soften the text and lift the page a little off black. The ratios below stay&lt;br /&gt;
   above AAA, so nothing becomes harder to read:&lt;br /&gt;
&lt;br /&gt;
     headings   #f8f9fa 17.6:1  -&amp;gt;  #dfe3e7 13.7:1&lt;br /&gt;
     body text  #eaecf0 15.6:1  -&amp;gt;  #ccd1d6 11.5:1&lt;br /&gt;
     bylines    #a2a9b1  7.8:1  -&amp;gt;  #9fa6ae  7.2:1&lt;br /&gt;
&lt;br /&gt;
   These override Codex tokens, so everything on the page follows -- article&lt;br /&gt;
   text, the skin&#039;s own chrome and the styles above alike. */&lt;br /&gt;
&lt;br /&gt;
.oj-dark-palette,&lt;br /&gt;
html.skin-theme-clientpref-night {&lt;br /&gt;
	--color-base: #ccd1d6;&lt;br /&gt;
	--color-emphasized: #dfe3e7;&lt;br /&gt;
	--color-subtle: #9fa6ae;&lt;br /&gt;
	--background-color-base: #17191c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The same, for readers on Automatic whose system is set to dark. */&lt;br /&gt;
@media screen and ( prefers-color-scheme: dark ) {&lt;br /&gt;
	html.skin-theme-clientpref-os {&lt;br /&gt;
		--color-base: #ccd1d6;&lt;br /&gt;
		--color-emphasized: #dfe3e7;&lt;br /&gt;
		--color-subtle: #9fa6ae;&lt;br /&gt;
		--background-color-base: #17191c;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* A single external link styled as a button, for the one place that needs it:&lt;br /&gt;
   the database dump on OpenJournal:Helping out. */&lt;br /&gt;
.oj-download {&lt;br /&gt;
	margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	padding: 0.55em 1.1em;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	background: var( --background-color-progressive, #36c );&lt;br /&gt;
	color: var( --color-inverted, #fff );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a:hover {&lt;br /&gt;
	background: var( --background-color-progressive--hover, #4b77d6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MediaWiki marks every external link with a small icon by default; it reads&lt;br /&gt;
   oddly against a button. */&lt;br /&gt;
.oj-download a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Prev/next links at the bottom of each page of the front-page feed. */&lt;br /&gt;
.oj-pager {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	margin-top: 1em;&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
	border-top: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Either link can be absent (first or last page). flexbox alone can&#039;t tell&lt;br /&gt;
   &amp;quot;only Older present&amp;quot; from &amp;quot;only Newer present&amp;quot; -- both are a lone&lt;br /&gt;
   first-child -- so the template gives Older its own class to push right. */&lt;br /&gt;
.oj-pager .oj-older {&lt;br /&gt;
	margin-left: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Appearance (theme/font-size/width) is removed from every page rather than&lt;br /&gt;
   relocated -- Vector wires it into the right column with no config to move&lt;br /&gt;
   it, and Special:Preferences already has a real, working &amp;quot;Color&amp;quot; setting&lt;br /&gt;
   under Appearance, so nothing is lost for anyone with an account; readers&lt;br /&gt;
   without one still get the site&#039;s OJ_DEFAULT_THEME default. */&lt;br /&gt;
.vector-appearance-landmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;quot;Switch to old look&amp;quot; (legacy Vector opt-out), shown to logged-in users at&lt;br /&gt;
   the bottom of the left menu. Vector hardcodes this with no config flag to&lt;br /&gt;
   turn it off -- confirmed by rendering the component directly rather than&lt;br /&gt;
   guessing from the template -- so it&#039;s removed the same way as Appearance. */&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The right panel&#039;s &amp;quot;Last modified&amp;quot; link already says this. No config gate&lt;br /&gt;
   exists for the footer&#039;s own copy (unlike Privacy/About/Disclaimers just&lt;br /&gt;
   above, which are disabled the proper way, via their interface messages),&lt;br /&gt;
   so it&#039;s hidden the same way Appearance and the old-look link are. */&lt;br /&gt;
#footer-info-lastmod {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector deliberately gives the page title (h1) and h2 section headings a&lt;br /&gt;
   serif font -- Wikipedia&#039;s own visual identity -- while body text, and&lt;br /&gt;
   even h3-h6, stay sans-serif. Confirmed in skins.vector.styles: the rule&lt;br /&gt;
   is .mw-body h1, .mw-body-content h1/h2 { font-family: &#039;Linux Libertine&#039; ...&lt;br /&gt;
   That split reads as inconsistent here, so headings inherit the body font&lt;br /&gt;
   instead of overriding it -- one font, everywhere, and it stays that way&lt;br /&gt;
   even if the body font ever changes. */&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body .mw-heading1,&lt;br /&gt;
.mw-body-content h1,&lt;br /&gt;
.mw-body-content .mw-heading1,&lt;br /&gt;
.mw-body-content h2,&lt;br /&gt;
.mw-body-content .mw-heading2 {&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=Main_Page&amp;diff=46</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=Main_Page&amp;diff=46"/>
		<updated>2026-09-11T08:40:45Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;oj-hero&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;oj-hero-title&amp;quot;&amp;gt;openjournal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;oj-hero-sub&amp;quot;&amp;gt;&lt;br /&gt;
Openjournal is a fully decentralised blogging/journaling/notetaking ecosystem. Sign in with your wikipedia login and begin writing. &lt;br /&gt;
&lt;br /&gt;
Want to write here but host your articles elsewhere? Read our [[OpenJournal:API|API guide]]&lt;br /&gt;
&lt;br /&gt;
Start writing immediately and join the community!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest articles ==&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|next=OpenJournal:Latest/2}}&lt;br /&gt;
&lt;br /&gt;
== Everyone writing here ==&lt;br /&gt;
&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|namespace = User&lt;br /&gt;
|nottitlematch = %/%&lt;br /&gt;
|ordermethod = title&lt;br /&gt;
|count = 100&lt;br /&gt;
|mode = userformat&lt;br /&gt;
|listseparators = &amp;lt;span class=&amp;quot;oj-authors&amp;quot;&amp;gt;,&amp;lt;span&amp;gt;[[%PAGE%{{!}}%TITLE%]]&amp;lt;/span&amp;gt;,,&amp;lt;/span&amp;gt;&lt;br /&gt;
|allowcachedresults = false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wanting to help out? ==&lt;br /&gt;
&lt;br /&gt;
openjournal is nothing but MediaWiki underneath, which means everything on it can&lt;br /&gt;
leave with you -- see [[OpenJournal:Helping out]] for a database dump you can&lt;br /&gt;
download and load into a wiki of your own.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=45</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=45"/>
		<updated>2026-09-11T08:37:02Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* openjournal -- loaded into MediaWiki:Common.css by the seed step.&lt;br /&gt;
   Edit it on-wiki at /wiki/MediaWiki:Common.css, or here and re-seed.&lt;br /&gt;
&lt;br /&gt;
   Colours are MediaWiki&#039;s Codex design tokens rather than literals, so this&lt;br /&gt;
   file follows the reader&#039;s Light/Dark/Automatic choice without needing a&lt;br /&gt;
   second set of rules. The hex values after each token are the light-mode&lt;br /&gt;
   fallback, used only if a skin does not define the token. */&lt;br /&gt;
&lt;br /&gt;
.oj-hero {&lt;br /&gt;
	margin: 0 0 1.5em;&lt;br /&gt;
	padding: 2em 0 1.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-subtle, #c8ccd1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-hero-title {&lt;br /&gt;
	font-size: 2.6em;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	color: var( --color-emphasized, #101418 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-hero-sub {&lt;br /&gt;
	max-width: 34em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* One article in a feed. */&lt;br /&gt;
.oj-entry {&lt;br /&gt;
	padding: 0.7em 0;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-entry a {&lt;br /&gt;
	font-size: 1.12em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-byline {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.88em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-journal .oj-feed {&lt;br /&gt;
	margin-top: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-footnote {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The author list is a run of spans; CSS supplies the separators so there is&lt;br /&gt;
   never a trailing one. */&lt;br /&gt;
.oj-authors span + span::before {&lt;br /&gt;
	content: &amp;quot; \00b7 &amp;quot;;&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The &amp;quot;start a new article&amp;quot; box reads as a call to action, not a search field. */&lt;br /&gt;
.oj-journal .inputbox-element {&lt;br /&gt;
	max-width: 26em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------- Dark mode&lt;br /&gt;
&lt;br /&gt;
   Codex&#039;s dark palette puts body text at #eaecf0 and headings at #f8f9fa on a&lt;br /&gt;
   #101418 page: contrast ratios of 15.6:1 and 17.6:1. WCAG AAA asks for 7:1,&lt;br /&gt;
   so that is roughly twice the contrast anyone needs, and on a near-black&lt;br /&gt;
   ground it is where text starts to glow and smear (halation).&lt;br /&gt;
&lt;br /&gt;
   Soften the text and lift the page a little off black. The ratios below stay&lt;br /&gt;
   above AAA, so nothing becomes harder to read:&lt;br /&gt;
&lt;br /&gt;
     headings   #f8f9fa 17.6:1  -&amp;gt;  #dfe3e7 13.7:1&lt;br /&gt;
     body text  #eaecf0 15.6:1  -&amp;gt;  #ccd1d6 11.5:1&lt;br /&gt;
     bylines    #a2a9b1  7.8:1  -&amp;gt;  #9fa6ae  7.2:1&lt;br /&gt;
&lt;br /&gt;
   These override Codex tokens, so everything on the page follows -- article&lt;br /&gt;
   text, the skin&#039;s own chrome and the styles above alike. */&lt;br /&gt;
&lt;br /&gt;
.oj-dark-palette,&lt;br /&gt;
html.skin-theme-clientpref-night {&lt;br /&gt;
	--color-base: #ccd1d6;&lt;br /&gt;
	--color-emphasized: #dfe3e7;&lt;br /&gt;
	--color-subtle: #9fa6ae;&lt;br /&gt;
	--background-color-base: #17191c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The same, for readers on Automatic whose system is set to dark. */&lt;br /&gt;
@media screen and ( prefers-color-scheme: dark ) {&lt;br /&gt;
	html.skin-theme-clientpref-os {&lt;br /&gt;
		--color-base: #ccd1d6;&lt;br /&gt;
		--color-emphasized: #dfe3e7;&lt;br /&gt;
		--color-subtle: #9fa6ae;&lt;br /&gt;
		--background-color-base: #17191c;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* A single external link styled as a button, for the one place that needs it:&lt;br /&gt;
   the database dump on OpenJournal:Helping out. */&lt;br /&gt;
.oj-download {&lt;br /&gt;
	margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	padding: 0.55em 1.1em;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	background: var( --background-color-progressive, #36c );&lt;br /&gt;
	color: var( --color-inverted, #fff );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a:hover {&lt;br /&gt;
	background: var( --background-color-progressive--hover, #4b77d6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MediaWiki marks every external link with a small icon by default; it reads&lt;br /&gt;
   oddly against a button. */&lt;br /&gt;
.oj-download a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Prev/next links at the bottom of each page of the front-page feed. */&lt;br /&gt;
.oj-pager {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	margin-top: 1em;&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
	border-top: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Either link can be absent (first or last page). flexbox alone can&#039;t tell&lt;br /&gt;
   &amp;quot;only Older present&amp;quot; from &amp;quot;only Newer present&amp;quot; -- both are a lone&lt;br /&gt;
   first-child -- so the template gives Older its own class to push right. */&lt;br /&gt;
.oj-pager .oj-older {&lt;br /&gt;
	margin-left: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Appearance (theme/font-size/width) is removed from every page rather than&lt;br /&gt;
   relocated -- Vector wires it into the right column with no config to move&lt;br /&gt;
   it, and Special:Preferences already has a real, working &amp;quot;Color&amp;quot; setting&lt;br /&gt;
   under Appearance, so nothing is lost for anyone with an account; readers&lt;br /&gt;
   without one still get the site&#039;s OJ_DEFAULT_THEME default. */&lt;br /&gt;
.vector-appearance-landmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;quot;Switch to old look&amp;quot; (legacy Vector opt-out), shown to logged-in users at&lt;br /&gt;
   the bottom of the left menu. Vector hardcodes this with no config flag to&lt;br /&gt;
   turn it off -- confirmed by rendering the component directly rather than&lt;br /&gt;
   guessing from the template -- so it&#039;s removed the same way as Appearance. */&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The right panel&#039;s &amp;quot;Last modified&amp;quot; link already says this. No config gate&lt;br /&gt;
   exists for the footer&#039;s own copy (unlike Privacy/About/Disclaimers just&lt;br /&gt;
   above, which are disabled the proper way, via their interface messages),&lt;br /&gt;
   so it&#039;s hidden the same way Appearance and the old-look link are. */&lt;br /&gt;
#footer-info-lastmod {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector deliberately gives the page title (h1) and h2 section headings a&lt;br /&gt;
   serif font -- Wikipedia&#039;s own visual identity -- while body text, and&lt;br /&gt;
   even h3-h6, stay sans-serif. Confirmed in skins.vector.styles: the rule&lt;br /&gt;
   is .mw-body h1, .mw-body-content h1/h2 { font-family: &#039;Linux Libertine&#039; ...&lt;br /&gt;
   That split reads as inconsistent here, so headings inherit the body font&lt;br /&gt;
   instead of overriding it -- one font, everywhere, and it stays that way&lt;br /&gt;
   even if the body font ever changes. */&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body .mw-heading1,&lt;br /&gt;
.mw-body-content h1,&lt;br /&gt;
.mw-body-content .mw-heading1,&lt;br /&gt;
.mw-body-content h2,&lt;br /&gt;
.mw-body-content .mw-heading2 {&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=44</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=MediaWiki:Common.css&amp;diff=44"/>
		<updated>2026-09-11T08:35:56Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* openjournal -- loaded into MediaWiki:Common.css by the seed step.&lt;br /&gt;
   Edit it on-wiki at /wiki/MediaWiki:Common.css, or here and re-seed.&lt;br /&gt;
&lt;br /&gt;
   Colours are MediaWiki&#039;s Codex design tokens rather than literals, so this&lt;br /&gt;
   file follows the reader&#039;s Light/Dark/Automatic choice without needing a&lt;br /&gt;
   second set of rules. The hex values after each token are the light-mode&lt;br /&gt;
   fallback, used only if a skin does not define the token. */&lt;br /&gt;
&lt;br /&gt;
.oj-hero {&lt;br /&gt;
	margin: 0 0 1.5em;&lt;br /&gt;
	padding: 2em 0 1.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-subtle, #c8ccd1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-hero-title {&lt;br /&gt;
	font-size: 2.6em;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	color: var( --color-emphasized, #101418 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-hero-sub {&lt;br /&gt;
	margin-top: 0.4em;&lt;br /&gt;
	font-size: 1.05em;&lt;br /&gt;
	color: var( --color-subtle, #202122 );&lt;br /&gt;
	max-width: 34em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* One article in a feed. */&lt;br /&gt;
.oj-entry {&lt;br /&gt;
	padding: 0.7em 0;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-entry a {&lt;br /&gt;
	font-size: 1.12em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-byline {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.88em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-journal .oj-feed {&lt;br /&gt;
	margin-top: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-footnote {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The author list is a run of spans; CSS supplies the separators so there is&lt;br /&gt;
   never a trailing one. */&lt;br /&gt;
.oj-authors span + span::before {&lt;br /&gt;
	content: &amp;quot; \00b7 &amp;quot;;&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The &amp;quot;start a new article&amp;quot; box reads as a call to action, not a search field. */&lt;br /&gt;
.oj-journal .inputbox-element {&lt;br /&gt;
	max-width: 26em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------- Dark mode&lt;br /&gt;
&lt;br /&gt;
   Codex&#039;s dark palette puts body text at #eaecf0 and headings at #f8f9fa on a&lt;br /&gt;
   #101418 page: contrast ratios of 15.6:1 and 17.6:1. WCAG AAA asks for 7:1,&lt;br /&gt;
   so that is roughly twice the contrast anyone needs, and on a near-black&lt;br /&gt;
   ground it is where text starts to glow and smear (halation).&lt;br /&gt;
&lt;br /&gt;
   Soften the text and lift the page a little off black. The ratios below stay&lt;br /&gt;
   above AAA, so nothing becomes harder to read:&lt;br /&gt;
&lt;br /&gt;
     headings   #f8f9fa 17.6:1  -&amp;gt;  #dfe3e7 13.7:1&lt;br /&gt;
     body text  #eaecf0 15.6:1  -&amp;gt;  #ccd1d6 11.5:1&lt;br /&gt;
     bylines    #a2a9b1  7.8:1  -&amp;gt;  #9fa6ae  7.2:1&lt;br /&gt;
&lt;br /&gt;
   These override Codex tokens, so everything on the page follows -- article&lt;br /&gt;
   text, the skin&#039;s own chrome and the styles above alike. */&lt;br /&gt;
&lt;br /&gt;
.oj-dark-palette,&lt;br /&gt;
html.skin-theme-clientpref-night {&lt;br /&gt;
	--color-base: #ccd1d6;&lt;br /&gt;
	--color-emphasized: #dfe3e7;&lt;br /&gt;
	--color-subtle: #9fa6ae;&lt;br /&gt;
	--background-color-base: #17191c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The same, for readers on Automatic whose system is set to dark. */&lt;br /&gt;
@media screen and ( prefers-color-scheme: dark ) {&lt;br /&gt;
	html.skin-theme-clientpref-os {&lt;br /&gt;
		--color-base: #ccd1d6;&lt;br /&gt;
		--color-emphasized: #dfe3e7;&lt;br /&gt;
		--color-subtle: #9fa6ae;&lt;br /&gt;
		--background-color-base: #17191c;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* A single external link styled as a button, for the one place that needs it:&lt;br /&gt;
   the database dump on OpenJournal:Helping out. */&lt;br /&gt;
.oj-download {&lt;br /&gt;
	margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	padding: 0.55em 1.1em;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	background: var( --background-color-progressive, #36c );&lt;br /&gt;
	color: var( --color-inverted, #fff );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oj-download a:hover {&lt;br /&gt;
	background: var( --background-color-progressive--hover, #4b77d6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MediaWiki marks every external link with a small icon by default; it reads&lt;br /&gt;
   oddly against a button. */&lt;br /&gt;
.oj-download a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Prev/next links at the bottom of each page of the front-page feed. */&lt;br /&gt;
.oj-pager {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	margin-top: 1em;&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
	border-top: 1px solid var( --border-color-muted, #eaecf0 );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Either link can be absent (first or last page). flexbox alone can&#039;t tell&lt;br /&gt;
   &amp;quot;only Older present&amp;quot; from &amp;quot;only Newer present&amp;quot; -- both are a lone&lt;br /&gt;
   first-child -- so the template gives Older its own class to push right. */&lt;br /&gt;
.oj-pager .oj-older {&lt;br /&gt;
	margin-left: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Appearance (theme/font-size/width) is removed from every page rather than&lt;br /&gt;
   relocated -- Vector wires it into the right column with no config to move&lt;br /&gt;
   it, and Special:Preferences already has a real, working &amp;quot;Color&amp;quot; setting&lt;br /&gt;
   under Appearance, so nothing is lost for anyone with an account; readers&lt;br /&gt;
   without one still get the site&#039;s OJ_DEFAULT_THEME default. */&lt;br /&gt;
.vector-appearance-landmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;quot;Switch to old look&amp;quot; (legacy Vector opt-out), shown to logged-in users at&lt;br /&gt;
   the bottom of the left menu. Vector hardcodes this with no config flag to&lt;br /&gt;
   turn it off -- confirmed by rendering the component directly rather than&lt;br /&gt;
   guessing from the template -- so it&#039;s removed the same way as Appearance. */&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The right panel&#039;s &amp;quot;Last modified&amp;quot; link already says this. No config gate&lt;br /&gt;
   exists for the footer&#039;s own copy (unlike Privacy/About/Disclaimers just&lt;br /&gt;
   above, which are disabled the proper way, via their interface messages),&lt;br /&gt;
   so it&#039;s hidden the same way Appearance and the old-look link are. */&lt;br /&gt;
#footer-info-lastmod {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector deliberately gives the page title (h1) and h2 section headings a&lt;br /&gt;
   serif font -- Wikipedia&#039;s own visual identity -- while body text, and&lt;br /&gt;
   even h3-h6, stay sans-serif. Confirmed in skins.vector.styles: the rule&lt;br /&gt;
   is .mw-body h1, .mw-body-content h1/h2 { font-family: &#039;Linux Libertine&#039; ...&lt;br /&gt;
   That split reads as inconsistent here, so headings inherit the body font&lt;br /&gt;
   instead of overriding it -- one font, everywhere, and it stays that way&lt;br /&gt;
   even if the body font ever changes. */&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body .mw-heading1,&lt;br /&gt;
.mw-body-content h1,&lt;br /&gt;
.mw-body-content .mw-heading1,&lt;br /&gt;
.mw-body-content h2,&lt;br /&gt;
.mw-body-content .mw-heading2 {&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=User:Professorlamp/Linux_Audio_Production&amp;diff=43</id>
		<title>User:Professorlamp/Linux Audio Production</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=User:Professorlamp/Linux_Audio_Production&amp;diff=43"/>
		<updated>2026-09-11T08:34:55Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The future is here. I have moved my audio stack to Linux with no problems.&lt;br /&gt;
&lt;br /&gt;
All the VST’s I used on Windows can be bridged to work on Linux.&lt;br /&gt;
&lt;br /&gt;
The guide below assumes that the distro you’re using is Arch based (I use Manjaro) and the DAW is Reaper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; I had this working successfully with Ubuntu 20.04 but switched over to Manjaro for unrelated reasons. To reiterate, this &#039;&#039;will&#039;&#039; work on Ubuntu, the installation is a tiny bit more involved (though still not very, just follow the README and you’ll be fine) but that’s all.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Install yabridge and yabridgectl ===&lt;br /&gt;
Use yabridge and yabridgectl (much easier than linvst and the dev is on discord and very active)&lt;br /&gt;
&lt;br /&gt;
If you’re on Arch or something similar&amp;lt;pre&amp;gt;&lt;br /&gt;
yay -S yabridge &lt;br /&gt;
yay -S yabridgectl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tell yabridge where the plugin directories live ===&lt;br /&gt;
For Reaper the VST directories are &amp;lt;code&amp;gt;~/.vst&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;~/.vst3&amp;lt;/code&amp;gt; by default. Tell yabridge about these with the following:&lt;br /&gt;
 yabridgectl add ~/.vst&lt;br /&gt;
 yabridgectl add ~/.vst3&lt;br /&gt;
&lt;br /&gt;
=== Install some plugins ===&lt;br /&gt;
Download some plugins and move them into ~/.vst.&lt;br /&gt;
&lt;br /&gt;
Do the following to confirm&lt;br /&gt;
 yabridgectl status&lt;br /&gt;
Once you’re happy, do&lt;br /&gt;
 yabridgectl sync&lt;br /&gt;
To bridge them over and that’s it!&lt;br /&gt;
&lt;br /&gt;
Start up Reaper and your windows plugins will be on your Linux machine &amp;lt;3&lt;br /&gt;
&lt;br /&gt;
==== Plugins through wine ====&lt;br /&gt;
Some plugins like to be inconvenient and have &amp;lt;code&amp;gt;.exe&amp;lt;/code&amp;gt; executables to run instead of a .DLL In that case, do this:&lt;br /&gt;
&lt;br /&gt;
* Install the plugin using wine&lt;br /&gt;
* Make note of the VST plugin path (something like C://Users/Joe/Program Files/VST…)&lt;br /&gt;
&lt;br /&gt;
This path lives in Linux under a &amp;lt;code&amp;gt;.wine&amp;lt;/code&amp;gt; directory. Mine is&lt;br /&gt;
 &amp;lt;code&amp;gt;/home/joe/.wine/drive_c/Program Files (x86)/VstPlugIns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add this path with yabridgectl (You need to escape spaces and braces)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;yabridgectl add /home/joer/.wine/drive_c/Program\ Files\ \(x86\)/VstPlugIns&amp;lt;/code&amp;gt;&lt;br /&gt;
Remember to add this path to Reaper too in preferences so that it knows to look here for plugins.&lt;br /&gt;
&lt;br /&gt;
And there we go… again.&lt;br /&gt;
[[Category:Audio]]&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=User:Professorlamp/Linux_Audio_Production&amp;diff=42</id>
		<title>User:Professorlamp/Linux Audio Production</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=User:Professorlamp/Linux_Audio_Production&amp;diff=42"/>
		<updated>2026-09-11T08:34:29Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The future is here. I have moved my audio stack to Linux with no problems.&lt;br /&gt;
&lt;br /&gt;
All the VST’s I used on Windows can be bridged to work on Linux.&lt;br /&gt;
&lt;br /&gt;
The guide below assumes that the distro you’re using is Arch based (I use Manjaro) and the DAW is Reaper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; I had this working successfully with Ubuntu 20.04 but switched over to Manjaro for unrelated reasons. To reiterate, this &#039;&#039;will&#039;&#039; work on Ubuntu, the installation is a tiny bit more involved (though still not very, just follow the README and you’ll be fine) but that’s all.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Install yabridge and yabridgectl ===&lt;br /&gt;
Use yabridge and yabridgectl (much easier than linvst and the dev is on discord and very active)&lt;br /&gt;
&lt;br /&gt;
If you’re on Arch or something similar&amp;lt;pre&amp;gt;&lt;br /&gt;
yay -S yabridge &lt;br /&gt;
yay -S yabridgectl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tell yabridge where the plugin directories live ===&lt;br /&gt;
For Reaper the VST directories are &amp;lt;code&amp;gt;~/.vst&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;~/.vst3&amp;lt;/code&amp;gt; by default. Tell yabridge about these with the following:&lt;br /&gt;
 yabridgectl add ~/.vst&lt;br /&gt;
 yabridgectl add ~/.vst3&lt;br /&gt;
&lt;br /&gt;
=== Install some plugins ===&lt;br /&gt;
Download some plugins and move them into ~/.vst.&lt;br /&gt;
&lt;br /&gt;
Do the following to confirm&lt;br /&gt;
 yabridgectl status&lt;br /&gt;
Once you’re happy, do&lt;br /&gt;
 yabridgectl sync&lt;br /&gt;
To bridge them over and that’s it!&lt;br /&gt;
&lt;br /&gt;
Start up Reaper and your windows plugins will be on your Linux machine &amp;lt;3&lt;br /&gt;
&lt;br /&gt;
==== Plugins through wine ====&lt;br /&gt;
Some plugins like to be inconvenient and have &amp;lt;code&amp;gt;.exe&amp;lt;/code&amp;gt; executables to run instead of a .DLL In that case, do this:&lt;br /&gt;
&lt;br /&gt;
* Install the plugin using wine&lt;br /&gt;
* Make note of the VST plugin path (something like C://Users/Joe/Program Files/VST…)&lt;br /&gt;
&lt;br /&gt;
This path lives in Linux under a &amp;lt;code&amp;gt;.wine&amp;lt;/code&amp;gt; directory. Mine is&lt;br /&gt;
 &amp;lt;code&amp;gt;/home/joe/.wine/drive_c/Program Files (x86)/VstPlugIns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add this path with yabridgectl (You need to escape spaces and braces)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;yabridgectl add /home/joer/.wine/drive_c/Program\ Files\ \(x86\)/VstPlugIns&amp;lt;/code&amp;gt;&lt;br /&gt;
Remember to add this path to Reaper too in preferences so that it knows to look here for plugins.&lt;br /&gt;
&lt;br /&gt;
And there we go… again.&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=OpenJournal:Latest_articles&amp;diff=41</id>
		<title>OpenJournal:Latest articles</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=OpenJournal:Latest_articles&amp;diff=41"/>
		<updated>2026-09-11T08:29:40Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All articles:&lt;br /&gt;
&lt;br /&gt;
{{Latest articles page|offset=0|count=50}}&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=User:Professorlamp/Linux_Audio_Production&amp;diff=40</id>
		<title>User:Professorlamp/Linux Audio Production</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=User:Professorlamp/Linux_Audio_Production&amp;diff=40"/>
		<updated>2026-09-11T08:19:33Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The future is here. I have moved my audio stack to Linux with no problems.&lt;br /&gt;
&lt;br /&gt;
All the VST’s I used on Windows can be bridged to work on Linux.&lt;br /&gt;
&lt;br /&gt;
The guide below assumes that the distro you’re using is Arch based (I use Manjaro) and the DAW is Reaper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; I had this working successfully with Ubuntu 20.04 but switched over to Manjaro for unrelated reasons. To reiterate, this &#039;&#039;will&#039;&#039; work on Ubuntu, the installation is a tiny bit more involved (though still not very, just follow the README and you’ll be fine) but that’s all.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Install yabridge and yabridgectl ===&lt;br /&gt;
Use yabridge and yabridgectl (much easier than linvst and the dev is on discord and very active)&lt;br /&gt;
&lt;br /&gt;
If you’re on Arch or something similar&amp;lt;pre&amp;gt;&lt;br /&gt;
yay -S yabridge &lt;br /&gt;
yay -S yabridgectl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tell yabridge where the plugin directories live ===&lt;br /&gt;
For Reaper the VST directories are &amp;lt;code&amp;gt;~/.vst&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;~/.vst3&amp;lt;/code&amp;gt; by default. Tell yabridge about these with the following:&lt;br /&gt;
 yabridgectl add ~/.vst&lt;br /&gt;
 yabridgectl add ~/.vst3&lt;br /&gt;
&lt;br /&gt;
=== Install some plugins ===&lt;br /&gt;
Download some plugins and move them into ~/.vst.&lt;br /&gt;
&lt;br /&gt;
Do the following to confirm&lt;br /&gt;
 yabridgectl status&lt;br /&gt;
Once you’re happy, do&lt;br /&gt;
 yabridgectl sync&lt;br /&gt;
To bridge them over and that’s it!&lt;br /&gt;
&lt;br /&gt;
Start up Reaper and your windows plugins will be on your Linux machine &amp;lt;3&lt;br /&gt;
&lt;br /&gt;
==== Plugins through wine ====&lt;br /&gt;
Some plugins like to be inconvenient and have &amp;lt;code&amp;gt;.exe&amp;lt;/code&amp;gt; executables to run instead of a .DLL In that case, do this:&lt;br /&gt;
&lt;br /&gt;
* Install the plugin using wine&lt;br /&gt;
* Make note of the VST plugin path (something like C://Users/Joe/Program Files/VST…)&lt;br /&gt;
&lt;br /&gt;
This path lives in Linux under a &amp;lt;code&amp;gt;.wine&amp;lt;/code&amp;gt; directory. Mine is&lt;br /&gt;
 &amp;lt;code&amp;gt;/home/joe/.wine/drive_c/Program Files (x86)/VstPlugIns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add this path with yabridgectl (You need to escape spaces and braces)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;yabridgectl add /home/joer/.wine/drive_c/Program\ Files\ \(x86\)/VstPlugIns&amp;lt;/code&amp;gt;&lt;br /&gt;
Remember to add this path to Reaper too in preferences so that it knows to look here for plugins.&lt;br /&gt;
&lt;br /&gt;
And there we go… again.&lt;br /&gt;
[[Category:Audio]]&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
	<entry>
		<id>https://openjournal.wiki/index.php?title=User:Professorlamp/Linux_Audio_Production&amp;diff=39</id>
		<title>User:Professorlamp/Linux Audio Production</title>
		<link rel="alternate" type="text/html" href="https://openjournal.wiki/index.php?title=User:Professorlamp/Linux_Audio_Production&amp;diff=39"/>
		<updated>2026-09-11T08:19:06Z</updated>

		<summary type="html">&lt;p&gt;Professorlamp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The future is here. I have moved my audio stack to Linux with no problems.&lt;br /&gt;
&lt;br /&gt;
All the VST’s I used on Windows can be bridged to work on Linux.&lt;br /&gt;
&lt;br /&gt;
The guide below assumes that the distro you’re using is Arch based (I use Manjaro) and the DAW is Reaper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; I had this working successfully with Ubuntu 20.04 but switched over to Manjaro for unrelated reasons. To reiterate, this &#039;&#039;will&#039;&#039; work on Ubuntu, the installation is a tiny bit more involved (though still not very, just follow the README and you’ll be fine) but that’s all.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Install yabridge and yabridgectl ===&lt;br /&gt;
Use yabridge and yabridgectl (much easier than linvst and the dev is on discord and very active)&lt;br /&gt;
&lt;br /&gt;
If you’re on Arch or something similar&amp;lt;pre&amp;gt;&lt;br /&gt;
yay -S yabridge &lt;br /&gt;
yay -S yabridgectl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tell yabridge where the plugin directories live ===&lt;br /&gt;
For Reaper the VST directories are &amp;lt;code&amp;gt;~/.vst&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;~/.vst3&amp;lt;/code&amp;gt; by default. Tell yabridge about these with the following:&lt;br /&gt;
 yabridgectl add ~/.vst&lt;br /&gt;
 yabridgectl add ~/.vst3&lt;br /&gt;
&lt;br /&gt;
=== Install some plugins ===&lt;br /&gt;
Download some plugins and move them into ~/.vst.&lt;br /&gt;
&lt;br /&gt;
Do the following to confirm&lt;br /&gt;
 yabridgectl status&lt;br /&gt;
Once you’re happy, do&lt;br /&gt;
 yabridgectl sync&lt;br /&gt;
To bridge them over and that’s it!&lt;br /&gt;
&lt;br /&gt;
Start up Reaper and your windows plugins will be on your Linux machine &amp;lt;3&lt;br /&gt;
&lt;br /&gt;
==== Plugins through wine ====&lt;br /&gt;
Some plugins like to be inconvenient and have &amp;lt;code&amp;gt;.exe&amp;lt;/code&amp;gt; executables to run instead of a .DLL In that case, do this:&lt;br /&gt;
&lt;br /&gt;
* Install the plugin using wine&lt;br /&gt;
* Make note of the VST plugin path (something like C://Users/Joe/Program Files/VST…)&lt;br /&gt;
&lt;br /&gt;
This path lives in Linux under a &amp;lt;code&amp;gt;.wine&amp;lt;/code&amp;gt; directory. Mine is&lt;br /&gt;
 &amp;lt;code&amp;gt;/home/joe/.wine/drive_c/Program Files (x86)/VstPlugIns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add this path with yabridgectl (You need to escape spaces and braces)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;yabridgectl add /home/joer/.wine/drive_c/Program\ Files\ \(x86\)/VstPlugIns&amp;lt;/code&amp;gt;&lt;br /&gt;
Remember to add this path to Reaper too in preferences so that it knows to look here for plugins.&lt;br /&gt;
&lt;br /&gt;
And there we go… again.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[[Category:Audio]]&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Professorlamp</name></author>
	</entry>
</feed>