Bot passwords & you (& your bot (& you))
· ☕ 8 min read · ✍️ River
What’s a bot password? What’s the difference between bot accounts and bot passwords? Why do I need all this anyway?

Use cases for Highlight Links in Category
· ☕ 7 min read · ✍️ River
Highlight Links In Category is a very small MediaWiki extension that applies classes to links based on the links’ targets’ categories. It has a number of incredibly nice use cases; here I give some examples.

Adventures in caching primary keys
· ☕ 15 min read · ✍️ River
The pattern of store -> query -> store -> query can lead to caching nightmares when working with Cargo or SMW in MediaWiki. This is the story of how I dealt with one.

· ☕ 25 min read · ✍️ River
Popup content can offer users a wide range of dynamic content options on a page - and lazily-loading popup content can do this without increasing loading times. Here’s how I’ve built a framework for both static and lazily-loaded popups.

Highlighting disambiguations
· ☕ 29 min read · ✍️ River
Disambiguations are typically somewhat user-unfriendly, especially when a wiki has a relatively low percentage of pages that are disambiguated and so the presence of one is unexpected. Here I describe my method for improving quality of life when disambiguation links do appear.

CharInsert: Why you should "char"
· ☕ 12 min read · ✍️ River
CharInsert is one of my favorite extensions. Here’s how I made a Lua wrapper for it to create a user-friendly interface for anyone to add snippets they want.

Sublimetext for Mediawiki
· ☕ 13 min read · ✍️ River
The “Mediawiker” plugin makes Sublime the best IDE-like experience for editing wikis, particularly when one is primarily writing Scribunto/Lua modules. Here’s how I’ve set up my environment.

My EMWCon 2020 Talks
· ☕ 2 min read · ✍️ River
At EMWCon 2020, I gave one talk and hosted two Create Camp sessions, discussing different aspects of usage of Cargo and Lua in MediaWiki.

Gadgets for code organization
· ☕ 6 min read · ✍️ River
Though it’s mostly used as a way to let wikis have opt-in or opt-out CSS and JS features for users, the Gadgets extension is a great way to organize code instead of using Common.css and Common.js for everything.

Lua Hooks System
· ☕ 8 min read · ✍️ River
A system of hooks in Scribunto can be reasonable to use if you have a wikifarm with synced code that occasionally needs to be slightly modified on one or more wikis. I found the system more complicated than it was worth, but I’m documenting it here before I remove it.

Using the Mediawiki API without coding
· ☕ 13 min read · ✍️ River
Using the MediaWiki API doesn’t require coding. The on-wiki GUI provided at Special:ApiSandbox allows you to familiarize yourself with available actions, test queries, and run simple batch jobs without writing a single line of code!

How to add Cargo docstrings on table pages
· ☕ 6 min read · ✍️ River
This is not a post about how to add Cargo docstrings on table pages. Rather, it’s a post about how to create workarounds in MediaWiki in a reasonably well-controlled manner.