User:PhantomCaleb/Showcase

From Zelda Wiki, the Zelda encyclopedia

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

Code and Design

Firsst, 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 React components in that you provide simple attribute values and get back a bundle of HTML and CSS.
  • Modules are Lua scripts which can be used to implement templates.

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.

Majora's Mask (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 to describe every possible schedule that can occur for a given character. Kafei#Schedule would be an example of one of the more complex schedules.

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 a DAG in this way, and make it simple enough that non-technical editors could author it.

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.

Module:UtilsTable

Basically a Lua clone of the Lodash JavaScript library. Lua doesn't come with batteries and MediaWiki doesn't provide any means to link open source Lua libraries, so I had to build my own.