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
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 decision tree where some of the nodes are effectively duplicates.

(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 showcase every possible schedule that can occur for a given character. Kafei 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 generate a decision tree visualization from input simple enough that non-technical editors could manage.

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 use open source Lua libraries, so I had to build my own.