User:PhantomCaleb/Showcase

The following is a list of a few of the contributions that I am most proud to have in my time here at Zelda Wiki.

This page is linked in my resumé and my LinkedIn profile. If you are a ZW editor seeking gainful employment, I encourage you to do the same! Your experiences here may be more career-relevant than you realize.

Technical Writing

 * Guidelines:Cargo, a technical document explaining how Zelda Wiki manages its structured data.
 * Guidelines:CSS, a document describing best practices for writing CSS for Zelda Wiki.
 * Guidelines:Modules/Exercises, a training material which teaches beginners how to code in Lua.

Code and Design
First, some relevant definitions:
 * MediaWiki is the wiki software that this wiki is running on.
 * Templates are MediaWiki's mechanism for extending its markup syntax. They're a bit like simple React components, in the sense that you provide attribute values and get back a bundle of HTML and CSS.
 * Modules are bundles of Lua code that can implement template APIs.

Main Page
The current main page was a collaborative effort between User:GoldenChaos, User:Yumil1988, User:MannedTooth, and myself. GoldenChaos and Yumil came up with the original design. I gathered the feedback from the rest of the staff team and drove the implementation over the finish line. MannedTooth made some nice improvements such as the animations on the game tiles.

Template:MM Schedule
In short, this template permits the visualization of a directed acyclic graph where each node is a list of tuples. The DAG is usually a binary tree but there are some exceptions.

(MM) is a time-based game such that each character has a schedule that they follow: at time A they are at location X, then at time B move to location Y, and so on. This schedule can change based on whether or not a player completes certain actions. It is therefore desirable for this wiki to describe every possible schedule that can occur for a given character. Kafei is an example of one of the more complex schedules in the game.

MediaWiki is limited in terms of the kinds of data that you can provide as input to templates. Basically all you can do is give it a flat list of key-value string pairs. It was quite a challenge to figure out how to represent the DAG of schedules using key-value pairs, and make it simple enough for non-technical editors to author.

Module:Documentation and Module:UtilsArg
These two Lua modules consume Lua data objects which I've named "template specs". These specs are written documentation and unit tests rolled into one. The same spec is also used to parse and validate inputs. The fact that the documentation spec is also used to parse input and run tests means that the documentation is never out of date, which I find pretty neat.

Some notable examples of such tests/documentation include:
 * Module:File/Documentation
 * Module:UtilsArg/Documentation
 * Module:UtilsTable/Documentation

Module:UtilsTable
Basically a Lua clone of Lodash. Lua doesn't come with batteries and the open source libraries that exist don't work well with the subset of Lua that MediaWiki supports. So I built my own.