Fandom Developers Wiki

Jmalyszko Jmalyszko 13 days ago

AWS S3 data lifecycle framework at Fandom

(work in progress)

Read Full Post
Mnowicka Mnowicka 17 days ago

Platform Team’s Technical Decision Process - Actor Migration Case Study

As the Platform team at Fandom we are responsible for providing core functionalities and shared services used by all the teams that work on the Unified Community Platform. As a part of our job, we are responsible for keeping our platform secure, performant, and technically up-to-date.

That includes keeping MediaWiki (the wiki engine we are using) upgraded to the newest version, providing users with a secure platform with the newest features. This article describes our decision-making process for a project which was blocking us from upgrading MediaWiki to the new version.

  • 1 What is MediaWiki and why do we need to keep it up-to-date?
    • 1.1 What was blocking us from migrating to the newest version of MediaWiki?
  • 2 Challenges (aka problems) we have face…

Read Full Post
Gaperlinski Gaperlinski 17 August

Five Ways in which D&D Beyond Benefits from Dogfooding

Eating your own dog food, or “dogfooding”, is the practice of using one's own products or services. The rationale is that real-world usage of a product by the developers leads to improved quality and confidence in the product. First pioneered by Microsoft and adopted by a number of “big players”, including Facebook, dogfooding has perhaps been overused as a cover-up of extended QA on company employees. While it is true that there are some risks associated with the practice, when executed well and paired with reliable quality control, it can prove to be an effective technique.

Most of the engineering teams working on the D&D Beyond toolkit incorporate dogfooding into their process. In the context of my team, this practice means that each spr…

Read Full Post
Ritaly-dev Ritaly-dev 23 April

Auto linking Jira ticket in PR description via Github Action

I was looking for an easy way to generate a URL to a Jira ticket in the pull request description or as the first comment. The ticket number/code should be automatically extracted from the branch name.

Neat, automated solutions, but unfortunately, all the top articles from Google led me to the opposite problem - how to see PRs or commits from GitHub in Jira.

The final solution is really simple, so maybe someone will use it.

(or any other project management tool)

First things first - What is Github Action?

GitHub Action is a tool added to Github that allows you to automate your entire software development workflow such as CI/CD, custom steps, E2E testing, etc.

There is a lot of things you can just drop into GitHub Action and not have to worry about…

Read Full Post
Kudak Kudak 10 February

Announcing Talkbox

Today I am proud to present the beta phase of a new tool available to Fandom developers. Talkbox is a cloud server that will automatically poll any wiki's Recent Changes feed for you (every 30 seconds) and send back to you through a websocket connection that latest data that it has collected. This tool enables developers to worry less about the acquisition of data and focus more on doing the most with it.

Talkbox enables multiple developers to subscribe to the feeds of a single wiki and share that data among them so that instead of hitting the wiki's API multiple times in order to get the same data they can all wait for Talkbox to hit it just once and distribute it to each of them. This reduces the burden on Fandom's endpoint servers while …

Read Full Post
MadjerFd MadjerFd 16 December 2020

Coroutines Channel

This blogpost is a continuation of the previous post: Coroutines Flow, and goes deeper into coroutine streams. In this article, I’m going to explore hot streams called Channel. What is it? What does it do? How does it work? How to create and handle it? How does it compare with the cold streams? And finally, is there a place for both hot and cold streams? Let’s find out!

  • 1 Transfering values
  • 2 Producer-Consumer
  • 3 Pipeline
  • 4 Fan
  • 5 Buffer
  • 6 Hot and cold
  • 7 Broadcast
  • 8 Hot Flow
  • 9 Conclusion

Transferring a single value between coroutines can be done by the Deferred object (the result of async job). But when you need to transfer a stream of values between multiple coroutines, there could be a place for channels. Channel easily allows to transfer a stream of values (very …

Read Full Post
MadjerFd MadjerFd 3 December 2020

Coroutines Flow

This blogpost is a continuation of the previous post: Coroutines Basics, and covers more advanced mechanisms than basic coroutines have to offer. In this article, I'm going to present an idea of coroutine streams called Flow. Why and when do we need it? What can be achieved by using it? How to create and manage it? And how does it affect and cooperate with coroutines? I hope you will find all the answers below.

  • 1 Multiple values problem
  • 2 Flow to the rescue
  • 3 Builders
  • 4 Launching
  • 5 Cancellation
  • 6 Context
  • 7 Operators
  • 8 Buffering
  • 9 Composing and flattening
  • 10 Exception

As far as we already know from the previous article, a suspending function can return a single value. What if there is a need to return multiple asynchronously calculated values? Let's make it clear w…

Read Full Post
Kviatkovsky Kviatkovsky 9 November 2020

Verifying tracking events in XCUITest

UI tests are a great way to verify if your application is working correctly. Using them, you can verify if certain actions cause certain effects. However, you usually don’t want your application to send any data to production services, especially when the application is doing requests that modify the data on the server. In case when we know what request and response bodies should look like, it’s not a big problem. We can mock all the requests that the application makes and stub the responses.

However, it’s harder if you want to mock requests that are sent to analytics, which is very often handled by some third party provider like Google Firebase. Doing it the same way would require you to intercept requests sent to the third party provider …

Read Full Post
Jmalyszko Jmalyszko 5 November 2020

AWS S3 - Disaster recovery using versioning and objects metadata

  • 1 AWS S3 - Disaster recovery using versioning and objects metadata
    • 1.1 General Procedure for disaster recovery using S3 versioning and objects’ metadata
    • 1.2 Warning!
    • 1.3 OK, let’s do this!
    • 1.4 Summary

AUTHOR: Jacek Małyszko, Data Egnineering

June 2020

Accidental removal of data on S3 is something that no Data Engineer on AWS wants to be involved in. Unfortunately, sometimes it may happen; storage of data on S3 may be expensive so from time to time you may need to get rid of some terabytes here and there. Such data deletions may be performed automatically or manually. As we’re “only humans”, some mistakes may occur. For example, once I had this sad situation; instead of removing all files under 2020/05/01 prefix, I removed 2020/01.

Fortunately, the buck…

Read Full Post
MadjerFd MadjerFd 3 November 2020

Coroutines basics

We developers are constantly on a lookout for new solutions, the best approaches so no wonder the world is changing and asynchronous programming is changing with it. At Fandom we do the same: we want to follow and apply the best solutions for specific problems. And that's what we did for one of our latest projects. We decided to use Kotlin Coroutines in our Android app, not only because they are native (less dependencies, loosely coupled) but especially their usage has certain benefits.

It doesn't matter if you write mobile or desktop or even server-side applications, there could be a place for Kotlin Coroutines in your code. But what actually are they? How do they work? What problem do they solve? Where and when should they be used? In thi…

Read Full Post
JARVIII JARVIII 12 October 2020

Translation and link.

Where do you say I have to go, because I did not translate it, I wrote to the user User_talk:Cqm. Could you pass me the link?

  • Since we can't translate them, could you send someone to those specifically that were marked?


  • Ya que no podemos traducirlas, ¿podríais mandar a alguien a esas concretamente que estaban marcadas?
Read Full Post
MikolajFromDataEngineering MikolajFromDataEngineering 9 October 2020

Before you build your next ETL, answer these!

At Fandom Data Engineering team, we are responsible for not only building internal analytics capabilities, but also delivering features such as recommendations and Analytics Dashboard for our community.
In total, we are custodians of ~170 TB Data Warehouse.

Internally, we are using Apache Airflow to build and manage ~35 ETLs (Extract-Transform-Load), making it all possible.
This is a challenging task, no matter what technology is used.
Based on our experience, here are some questions we consider essential before anyone writes a data pipeline.

The world of data is alluring to almost anyone in a modern organisation.
Especially if it can be automated.

Most of our processes expose their results as tables on Amazon Athena, available for later consumption by to…

Read Full Post
JacekThePie2 JacekThePie2 24 September 2020

How to save some $$$ using Amazon Web Services?

Is using AWS cloud cool? Definitely! What is not so cool about using those kinds of services is quite a limited way to keep track of how much it costs or avoid surprising bills at the end of the month. Working on-premise does not make you concerned about those matters, but on the other hand, you have to give up on benefits that the cloud serves, like flexibility, auto-scaling, short time-to-market, robustness, easy research, and development, etc. 
The aforementioned end of the month comes, and after receiving a receipt, you are thinking only about two things: how is it possible that I burned so much money on this and how to make the next receipt less painful. Answer six questions below and find out how much you can save.

  • 1 Am I still using it…

Read Full Post
Kviatkovsky Kviatkovsky 19 August 2020

Faster pull request checks for modular iOS app

This blog post is a follow-up of Enhancing XcodeGen for simpler maintenance of dependencies in modular iOS app . In the mentioned article I showed you how we enhanced XcodeGen format so only direct dependencies of modules are needed to be specified in project definitions. In this article I would like to present to you a solution that made our PR checks faster, as we run them only for modules that need it. It’s best if you first read the mentioned article to fully understand the issues that we faced. Anyway, I’ll start with a quick recap of the problem.

In the sample setup we had 3 projects defined with XcodeGen:

  • "ModularApp" application
  • “FeatureModule” dynamic framework imported by the application
  • “ApiModule” dynamic framework imported by the …

Read Full Post
IrTriskit IrTriskit 17 July 2020

Beyond Remote

Remote work is quickly becoming the norm in the tech industry, but that was definitely not the case pre-2020. At D&D Beyond, we’ve always had some remote staff, but the vast majority of our team has been collocated at our office in Huntsville, Alabama. Historically, there were two main concerns around embracing more remote work - communication and culture.

As I mentioned, we were already working with some remote folks, but that certainly had some challenges. Most of our important communication happened in-office and in a lot of cases required you to be in close proximity to the conversation or else you’d probably miss out. Even having a desk on the opposite side of the office presented problems, let alone on the other side of the country or…

Read Full Post
Kviatkovsky Kviatkovsky 28 May 2020

Enhancing XcodeGen for simpler maintenance of dependencies in modular iOS app

  • 1 Breaking the monolith
  • 2 What’s the problem?
  • 3 What’s the solution?
  • 4 Summary

Developers that take the challenge of breaking the monolith in their iOS codebase and splitting it into separate modules face another problem: How to best manage multiple .xcodeproj files and potential conflict resolution on them? Fortunately, there’s a really convenient tool called XcodeGen that makes it quite easy – it generates the .xcodeproj files based on the YAML files stored in the codebase. Using YAML files greatly simplifies conflict resolution since you no longer need to version control .xcodeproj files. Instead, you can define your project with a much simpler syntax.

However, when you have a bunch of dynamic framework targets with dependencies between them and…

Read Full Post
Andrzej Łukaszewski Andrzej Łukaszewski 1 May 2020

Improving mobile-web performance - a case-study

In 2007 Steve Souders wrote a book High Performance Web Sites which was the first book I read about web performance. Two years later he published another book with a catchy title Even Faster Web Sites which I also read and I recommend both of them as a great source of basics in the web performance world.

However, the first one is really special in my opinion because 10 out of 14 pieces of advice are connected to the frontend. This led to forming the golden rule of web performance which I’d like every web developer to know: “Only 10-20% of the end user response time is spent downloading the HTML document. The other 80-90% is spent downloading all the components in the page”.

With the golden rule of web performance in mind let’s fast-forward to…

Read Full Post
Gaperlinski Gaperlinski 28 February 2020

Priming CMSampleBuffer containing AAC-encoded data using Apple's Core Media API

Lately, I’ve been spending a lot of my free time on a side project that focuses on converting real-time data obtained from AVCaptureSession into H.264 and AAC streams and saving them to an .mp4 file. While AVFoundation offers developers a pretty straightforward way of converting CMSampleBuffer into the desired format by means of AVAssetWriterInput and relevant output settings, I was unable to use that API because my use case required me to have direct access to converted raw bytes before they got appended to the target file.

In my case, I needed to utilize VTCompressionSession and AudioConverter in order to encode the data and then pass the resulting CMSampleBuffers to AVAssetWriter. I’m not going to get into the details of compression here; …

Read Full Post
Damian Bielecki Damian Bielecki 23 January 2020

Tree Shaking - Ad Engineering Journey

  • 1 Tree Shaking — Ad Engineering Journey
  • 2 Our setup
    • 2.1 Legacy Build
    • 2.2 Solution?
  • 3 Tree Shaking
    • 3.1 What is tree shaking?
    • 3.2 How it is done?
      • 3.2.1 How to setup a Typescript to support Tree Shanking?
  • 4 Problems
    • 4.1 Classes
    • 4.2 Instances
  • 5 Summary

Our journey with tree shaking and some nuisance we had to face.

In Ad Engineering we work on AdEngine our library for managing ads, as well as on integrating that library with various sites (apps) we support. So, we have a library and multiple apps that we need to adjust for tree shaking to work.

For building library (AdEngine) we use Typescript with Rollup.

For building apps we use Typescript with Webpack.

Before tree shaking we used to split AdEngine into separate modules to limit bundle size. That solution was hard to m…

Read Full Post
Dorotamierzwa15 Dorotamierzwa15 11 December 2019

5 different data sources accessed from one Jupyter notebook - Sroka library use cases

Sroka is an open source Python library that enables quick access to various data sources (e.g. S3, Athena, Google Ad Manager). Name of this library comes from Polish language - “sroka” means magpie.

Having introduced Sroka to the public in the first Medium article , I want to now share an example of a real analysis, where Sroka shows a wide spectrum of its capabilities (though not all of it!). As an Ads Data Analyst, I will show Sroka usage in a project that leveraged advertising technology. If you are interested in how to use Sroka to access specific data source, feel free to jump straight to the respective section.

  • 1 Why
  • 2 Project intro
  • 3 Analysis goals
  • 4 Google Ad Manager (GAM)
  • 5 Athena
  • 6 Google Analytics
  • 7 Google Sheets
  • 8 S3
  • 9 Summary

Before diving into t…

Read Full Post
Amelable Amelable 18 October 2019

Increasing the CTR of ad banners through design

  • 1 Introduction
  • 2 Round 1: A/B testing
    • 2.1 Results
    • 2.2 Summary
  • 3 Round 2: A/B/C/D testing
    • 3.1 Results
    • 3.2 Summary
  • 4 Round 3: A/B/C/D/E testing
    • 4.1 Results
    • 4.2 Summary
  • 5 Conclusions
  • 6 Tools and techniques
  • 7 References

Optimizing the advertising strategy has recently become even more challenging than it used to be. The main reason for this is the overall declining CTR, which is the ratio between clicks and impressions, one of the key metrics in digital advertising. One cause for this observed trend might be the growing importance of the web as a sales channel and the resulting need to advertise online. The amount of unique online advertisements has grown tremendously over the years, severely impacting the user experience on websites¹. Ads became more and more intrusiv…

Read Full Post
Nikodamn Nikodamn 30 September 2019

How to start writing automated tests using WebdriverIO

End-to-end tests are useful tool for checking if current state of an application meets business requirements. In Fandom we put a lot of emphasis on such tests and ensuring that those needs are met along with application changes to make sure that we deliver the best possible experience for our users.

In this article series I’d like to present how to create functional tests in WebdriverIO, integrate them with Jenkins, containerize, scale and setup a good-looking test reports dashboard with Allure and implement a Continuous Deployment solution. But let’s start from the beginning.

WebdriverIO (or just wdio) is an Open Source test framework for Node.js. Currently it’s one of the most popular testing frameworks in the JS automation world next to S…

Read Full Post
Damian Bielecki Damian Bielecki 30 August 2019

Jenkins Jobs Runner

  • 1 Jenkins Jobs Runner
  • 2 How it works?
    • 2.1 Await Execute Batch
    • 2.2 Display Stream
    • 2.3 Combined Stream
  • 3 How to use it?
  • 4 Summary

This article is part of a Jenkins CLI series in which we describe how we built CLI application for executing a series of parallel Jenkins Jobs in a terminal.

Jenkins Jobs Runner is a library powered by Jenkins RxJs that enables sequential execution of n batches, each of m parallel jobs. On top of that, it provides a visual interface to display the current status of jobs.

Jenkins Jobs Runner takes as an input array of JobBatchDescriptor object. They are expressed through an interface:

import { JobBuildOptions } from 'jenkins';
export interface JobBatchDescriptor { displayName: T1; jobDescriptor: JobDescriptor[]; }
export interfac…

Read Full Post
Bielik20 Bielik20 20 August 2019

Jenkins RxJs

  • 1 Jenkins RxJs
  • 2 How it works?
  • 3 How to use it?
  • 4 Summary

This article is part of the Jenkins CLI series in which we describe how we built CLI application for executing a series of parallel Jenkins Jobs in a terminal

Jenkins RxJs is a small wrapper library on top of the Jenkins npm package that can be used in CLI, node, or browser environment. It encapsulates the whole process of starting a job and tracking it in a quiet, queue and build states. The consumer of the library simply executes run command with job options and receives a stream of JobResponse objects.

This diagram describes the entire process:

And JobReponse can be expressed in the following interfaces:

type JobStatus = 'FAILURE' | 'SUCCESS' | 'PROGRESS';
type JobResponse = JobProgress | Job…

Read Full Post
Mech.wikia Mech.wikia 24 May 2019

Migrating domains from to

  • 1 Rationale
  • 2 Challenges
    • 2.1 Certificates and non-English language subdomains
    • 2.2 User submitted content
    • 2.3 Several thousand community domains
    • 2.4 Ads and ad networks
    • 2.5 Several applications
    • 2.6 Internal (proxied) requests
    • 2.7 Caching
    • 2.8 Anonymous vs logged-in users
    • 2.9 Development/staging domains
    • 2.10 “” hardcoded everywhere
    • 2.11 Confidentiality/PR
  • 3 Planning
  • 4 Execution
  • 5 Migrations/Final switch
  • 6 Conclusions and lessons learned
  • 7 Summary

In the first few months of 2019, we switched all our communities to HTTPS and migrated them to new domains. That switch is the end of a year-long project during which we touched several pieces of our infrastructure. This blog post summarizes the project, from planning through execution up to the results of the switch.

The decis…

Read Full Post
ShadicalCZ ShadicalCZ 11 April 2019


first blog by me

Read Full Post
Brudne plaze Brudne plaze 25 February 2019

Portable Infoboxes Graphs - PIGs

As in most companies, at the end of the year everything seems to slow down. December is the month of closing budgets, focusing on platform stability and starting of holidays season that results with a pause in release cycles. Last year, we took this time and allowed ourselves to do a small experiment, a fun engineering project, which we affectionately called PIGS and I would like to share with you its results.

  • 1 Refreshing your knowledge on Portable Infoboxes
  • 2 Case #1 — trying out graphs in team sports
  • 3 Case #2 — TV Series
  • 4 PIGs Experiment afterthoughts

A few years ago, one of the product teams released Portable Infoboxes. PI’s are the tables that usually contain rich metadata related to the article topic, they have key — value table structure, …

Read Full Post
JCel JCel 6 February 2019

AWS Athena Alerter

  • 1 The Challenge
  • 2 What is Athena Alerter
  • 3 The Road Ahead
  • 4 Under the Hood

Athena is a convenient big data query engine offered by AWS. It quickly got adopted in our company by multiple departments, however, its serverless nature has also created the risk of our Athena bill getting out of hand.

Our data set contains terabytes of data and it’s easy to write a very expensive query. The users can avoid such a scenario by using partitions which allow them to limit the amount of accessed data to only the time period of interest. However, when working on a report in an external tool or implementing some complex queries, it’s easy to make a mistake or forget about partitioning. Also, external tools often do not show the amount of data scanned, so it’s not…

Read Full Post
Rogue maltron Rogue maltron 12 January 2019

plagarism tool

is anyone interested in creating a plagarism tool with me for intergraton with fandom?

Read Full Post
NanciDS NanciDS 20 December 2018

when will you create the successor of the Monobook skin?

Hi Everyone, when will you create the successor of the Monobook skin?, I want a fandom skin based on the Wikipedia Vector skin, where the same features as Wikipedia, for all the monobook communities that miss that Wikia skin but want one appeared to Wikipedia, Vector.

Can you create it for me?

Read Full Post
Laclale Laclale 30 November 2018

Anyone can help?

I made my track module, but didn't display values.

w:c:ja.ocraviutl:GH_GetAudio for preview and what I written.


Read Full Post
Wiki-o-slay Wiki-o-slay 16 August 2018

Why shouldn't you use health checks?

At FANDOM we believe our applications should be resilient, that is they should be able to recover from failures and while the failure occurs still be useful for the users. Health checks are one of the ways to make applications self-healing.

The idea is that the health checks detect when an instance of the application reaches an invalid state. A supervisor monitors those health checks and attempts to fix any issues. Depending on your platform the action might be different.

Many frameworks (like Dropwizard and Spring) and platforms (like Kubernetes and Marathon) encourage you to implement health checks for your web applications.

When a health check fails, AWS will stop sending requests to that instance. That’s pretty straightforward — we suspec…

Read Full Post
Jrogan92 Jrogan92 23 July 2018


As the GDPR deadline has come and past, our team has reflected on its efforts of building the front-end library. The task was to build a front-end modal which FANDOM would integrate across its web products. For obvious reasons (a $20 million fine), we set a strict zero tolerance level for any failures. Our goal from the outset was to create the most well tested piece of code at FANDOM.

The first problem we had to tackle was being able to reliably detect where in the world the user currently viewing a given page is visiting from. Our network provider Fastly provides a Geo Detection service through its Varnish servers. This exposes a wealth of information, but most importantly, an ISO 3166-2 country code associated with the client IP address.…

Read Full Post
JoeyPknowsalotaboutthat JoeyPknowsalotaboutthat 18 June 2018

Vector skin

Is it possible to install or create a custom Vector skin, or make Oasis more like Vector, for my wiki, ? It does not need to be the default, but I do need it. The retired Monobook skin was my default, and thus, I need a non-dev alternative. Please answer this question. Thank you. Joey P. (Talk) (Contact) 04:29, June 18, 2018 (UTC)

Read Full Post
RainyShadow RainyShadow 26 May 2018


Read Full Post
Rogue maltron Rogue maltron 24 April 2018

programming lab wiki

there is a wiki out there and i invite all  of you to join its much like the dev wiki but there we do more of testing before releasing our finished script to the dev wiki i have to tally failed to develop words for this blog so in essence just join

Read Full Post
RubberDuckie3 RubberDuckie3 29 January 2017


guys this will help you

Here is the test wiki, i use it for CSS tests

you need to add this code to your Wikia CSS

You can change Comic Sans MS to anything you want

First, you will need to insert this code

However you may run into problems with the Icons having a blue frame around them, the simplest solution is to remove the Icons using this code. Also you can change the Hex code and border to anything you want (Just dont make it too big)

This will make the links have a cool effect on them when hovered

TIP: You can add :hover to something to make the Styling activate on hover

Read Full Post
Saftzie Saftzie 17 June 2016

ECMAScript 2015 Promises

Read Full Post
Bognix Bognix 23 October 2015

Wikia's adventure with TypeScript

For the time being we are using TypeScript in our Mercury project.

If you want to know what TypeScript is I recommend this [ article] or official documentation. Long story short TypeScirpt is a typed superset of JavaScript which compiles to (readable) JavaScript.

If you want to know more about Mercury [ here] you can find small description or if you prefer to read code instead of articles here is the link to the github repo.

  • 1 TypeScript @Wikia
    • 1.1 What worked for us
      • 1.1.1 It compiles
      • 1.1.2 ES6
    • 1.2 What didn't work for us
      • 1.2.1 It's typed
      • 1.2.2 Ember + TypeScript
    • 1.3 Conclusion

It's typed

When there is 40+ developers working on one project it's hard to keep up with all the changes. Having types makes it easier to understand parts of code you didn't know exi…

Read Full Post
Danuhau Danuhau 4 November 2014

User tags

Are there any of you who are good at submitting custom user tags? I tried to follow the recipe from this page [1], but it did not give any result. I think the difficulties began when I had to edit three pages to get it done, which are these: [2], [3] and [4]. Any help or advice would be much appreciated! :)

Read Full Post
Flawless Diva Flawless Diva 15 June 2014


Hi - can one of you please invent a Common.js personal modification to disable Visual Editor on all wikis? I really need it right now. Thanks --Audrey

Read Full Post
Снежны Принц Снежны Принц 18 January 2014

Исчисления снежных эльфов и дальнейшая судьба Тамприэля

1 Давакину в видений явиляита призрак Снежнова Принца и открывает способ излечит снежных эльфов , смосит толка смертны ставши богам.

2 На острове Артэум Давакин мести с советом Артэума и помучу Ога Макнуса открывают врата в этериум.

3 в этериями довакин проходит 7 испытания Макнуса и в накраду апритает божественную сущность ,знания Макнуса и способность приврашата в Мизраэля (Disciples 3) .

4 Давакин восврасаета в Тамприэли излечивает снежны эльф . Забытой долине восстанавливает культуру снежны эльфов и основывает новую страну снежных эльфов.

Давакин в Скайрими основыйт новые поселения снежных эльфов .  

5 Великом Хротгори Давакин с  ситопоротые, проводят переговоры месту нортами и снежными эльфами о союзе месту двумя расами.

6 Довакин восстаёт …

Read Full Post
Seadrus Seadrus 3 January 2014

This time, a technical question

Is it possible to create a new parameter for the user pages?

To clarifiy, examples that already exist are as follows:





and I'm trying to create:


Read Full Post
Penguin-Pal Penguin-Pal 27 November 2013

Self-destructive code

Hi there,

If you're looking for a way of creating a script that not only uses conditions to decide whether or not to apply it but are also looking for a method of completely removing it from a certain script page, maybe you'd find this useful.

Basically the syntax of this code isn't too long. It's made of:

  • A function to begine with, to make it work.
  • Wrapping "tags" to be used as some sort of anchors, to determine what part of the code to remove.
  • A certain code to do, placed between the wrapping tags.
  • A condition, also trapped between the "anchors". If it's true then trigger the self-destruction code.

When and if the condition is true, it then would use $.getJSON to get the content of the JS page on which the code is found, remove the requested "a…

Read Full Post
Seadrus Seadrus 22 November 2013

Another Design Question

Hello there.

This is Seadrus with another question about the mystery of life. Wikia.

I was wondering if it was possible to edit the user page layout. I know this is kind of an odd question, but I was also wondering if you could do so for both all user pages and/or just a certain user's user page/

Thanks to anyone who helps,

Seadrus, Seadrus's User Page Talk Page Support me! 01:58, November 22, 2013 (UTC)

Read Full Post
Seadrus Seadrus 30 October 2013


Not entirely sure if this is the right place to do this, but it is technical.

My site needs a major spice-up.

  1. If anyone knows how to do the header and edit buttons custom (like here: ), I NEED TO KNOW!
  2. Does anyone know how to make the color for a user (like an admin) a separate color? I have searched the internet with tutorials that don't work on my wiki.
  3. By the way, my wiki is
  4. Again with the custom Dr. What - How did they customize... everything? Esp. the 'recent activity', 'Chat welcome messages' and the time on the top-right corner, near your name.
  5. Is there a way to change the alignment of the chat so that the textboxes could be…
Read Full Post
Mathmagician Mathmagician 25 April 2013

Feedback — Article Layout

Hey everyone,

So, I've recently created a couple of a boilerplate templates [ , Template:ConfigOptions, with possibility for more to follow ] aimed at educating end-users of JavaScript. These boilerplate templates are designed to...

  • Prevent script authors from having to write the same general information over and over again on their informational pages. E.g. "config options need to come before the import statement" — that's general information that's true for most scripts.
  • Summarize key points in a concise, reader friendly format
  • Contain useful, educational code examples that readers can generalize upon
  • Make information attention-grabbing and immediately accessible in the articles themselves, rather than tucked away in Help: pages that people m…
Read Full Post
Benjaminthewill123123 Benjaminthewill123123 24 April 2013

Has anyone else ever considered/used this?

The other day I was thinking about a way to only load scripts that I need on certain namespaces, so... I came up with this.

var Loaded = '1'; if (wgNamespaceNumber == "-1"){var Loaded = '0'; importArticles({ type: "script", articles: [ "w:c:creepypasta:MediaWiki:AjaxRefresh.js", "w:c:creepypasta:MediaWiki:NoLightBox.js", "w:c:creepypasta:MediaWiki:AJAXRollback.js", "w:c:dev:WHAM/code.js",]});} if (wgNamespaceNumber == "0"){var Loaded = '0'; importArticles({ type: "script", articles: [ "w:c:creepypasta:MediaWiki:Redlinks.js", "w:c:creepypasta:MediaWiki:AJAXRollback.js", "w:c:creepypasta:MediaWiki:AjaxUndo.js", "w:c:dev:AjaxPatrol/code.js",]});} if (wgNamespaceNumber == "1"){var Loaded = '0'; importArticles({ type: "script", articles: ["w:c:dev:Sine/code.js",]});} if (wgNamespaceNumber == "2"…
Read Full Post
Benjaminthewill123123 Benjaminthewill123123 24 March 2013

Adding AJAX to this code

First off I want to add AJAX to the code below so It doesn't refresh the page once it's done but rather adds a confirmation message to the button once it is done removing the red links. I have no idea how to begin, I have tried combining it with other AJAX scripts such as Quick delete and AJAX RC with no luck. Any help would be appreciated!

/******************************************************/ /* Red Link Fixer */ /* Idea by Madnessfan34537 */ /* Code by Madnessfan34537 and Monchoman45 */ /******************************************************/   $('#WikiHeader').append('<a class="wikia-button" onclick="this.innerHTML = span class="es0" style="font-weight:bold;…
Read Full Post
NTPYTO NTPYTO 29 January 2013

Add Template button

Hello, NTPYTO here. I have the markfordeletion button on another wiki, and thought it would be really helpful to have a button where you just clicked it, typed in your template name, optionally added parameters, and then it would edit the page for you. This would be really helpful to many wikia users, but I don't know how to make it. I was thinking one of you could do it.

Read Full Post