FANDOM


  • Kviatkovsky

    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 other third party dependencies, like Carthage-built libraries, managin…


    Read more >
  • Andrzej Łukaszewski

    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 more >
  • Gaperlinski

    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 more >
  • Damian Bielecki

    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 maintain and did not yield expected results. Every module was an autonomous unit and it usually meant including duplicates of code in each of them. Moreover, it was not clear how to split modules for the best efficiency as app…





    Read more >
  • Dorotamierzwa15

    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.


    Before diving into the code I would like to point out major benefits of using Sroka in data analyses:

    • Simplicity - after initia…

    Read more >
  • Amelable

    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 intrusive due to the competition, resulting in a growing amount of people using ad-blocking tools². This trend caused the development of the banner blindness phenomenon which describes the fact that…


    Read more >
  • Nikodamn

    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 more >
  • Bielik20

    Jenkins RxJs

    August 20, 2019 by Bielik20

    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 | JobDone;
    interface JobResponseBase { name: string; …



    Read more >
  • Mech.wikia

    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 decision to switch to HTTPS was a no brainer for us. We've been serving our login pages over HTTPS for quite a long time, but the wikis themselves were still using the unencrypted HTTP protocol. With the whole Web moving towards encrypted connections, browsers showing warnings on HTTP pages, HTTP/2 available only on HTTPS and possibly some search ranking drawbacks of not having HTTPS by default, we decided it was time to s…


    Read more >
  • Brudne plaze

    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.


    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, are usually placed in the top right corner of article and are built using wikitext templates. If you’d take a closer look you would notice th…


    Read more >
Community content is available under CC-BY-SA unless otherwise noted.

Fandom may earn an affiliate commission on sales made from links on this page.

Stream the best stories.

Fandom may earn an affiliate commission on sales made from links on this page.

Get Disney+