<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/my-video-feed-worked-on-wi-fi-so-i-built-a-worse-network-si1tgi0fr" -->

---
title: My Video Feed Worked on Wi‑Fi. So I Built a Worse Network
description: A developer building a video feed app grew frustrated with unrepeatable network conditions during testing and created Universal Media Lab — a local Docker...
canonical: https://daily.dev/posts/my-video-feed-worked-on-wi-fi-so-i-built-a-worse-network-si1tgi0fr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: My Video Feed Worked on Wi‑Fi. So I Built a Worse Network | daily.dev
og:description: A developer building a video feed app grew frustrated with unrepeatable network conditions during testing and created Universal Media Lab — a local Docker...
og:url: https://daily.dev/posts/my-video-feed-worked-on-wi-fi-so-i-built-a-worse-network-si1tgi0fr
og:image: https://api.daily.dev/og/posts/sI1TGi0FR.png
og:image:alt: My Video Feed Worked on Wi‑Fi. So I Built a Worse Network
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# My Video Feed Worked on Wi‑Fi. So I Built a Worse Network

**[Medium](https://daily.dev/sources/medium_js)** · 8 min read · 0 upvotes · 0 comments

## Summary

A developer building a video feed app grew frustrated with unrepeatable network conditions during testing and created Universal Media Lab — a local Docker Compose setup that simulates specific failure scenarios. The stack combines Toxiproxy for transport-level conditions (latency, bandwidth, resets), WireMock for server-side faults (TTFB delays, HTTP errors, malformed responses), Nginx as a gateway, and imgproxy for image variants. Fixed ports expose stable network profiles (clean, LTE, 3G, flaky, offline) while a single mutable port allows mid-session condition changes. An ingest pipeline converts source videos into progressive MP4, HLS, DASH, posters, subtitles, and preview images. Infrastructure smoke tests verify the lab itself is correctly configured, separating client bugs from misconfigured test conditions. The lab doesn't replace real-device testing but provides a tight feedback loop for reproducing specific failures while iterating on client code.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@nikolayv_dev/my-video-feed-worked-on-wi-fi-so-i-built-a-worse-network-3012c40f18e5>

## Similar posts on daily.dev

- [The Network is Part of the App Now: What Testers Keep Forgetting](https://daily.dev/posts/the-network-is-part-of-the-app-now-what-testers-keep-forgetting-xal0ulzej) · Software Testing Magazine · 0 upvotes · 0 comments
- [Chaos Testing Your TypeScript SDKs with Toxiproxy](https://daily.dev/posts/chaos-testing-your-typescript-sdks-with-toxiproxy-q7vchp41p) · TypeScript.TV · 1 upvotes · 0 comments
- [How Open-Source Automation Tools Handle the Testing Problem That Cloud-Native Independent Deployment Creates](https://daily.dev/posts/how-open-source-automation-tools-handle-the-testing-problem-that-cloud-native-independent-deployment-ejpubd1uw) · Container Journal · 0 upvotes · 0 comments
- [Working software runs locally](https://daily.dev/posts/working-software-runs-locally-acfymodik) · Lobsters · 0 upvotes · 0 comments

---

Tags: [#docker](https://daily.dev/tags/docker)

[View this post on daily.dev](https://daily.dev/posts/my-video-feed-worked-on-wi-fi-so-i-built-a-worse-network-si1tgi0fr)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"My Video Feed Worked on Wi‑Fi. So I Built a Worse Network","url":"https://daily.dev/posts/my-video-feed-worked-on-wi-fi-so-i-built-a-worse-network-si1tgi0fr","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/my-video-feed-worked-on-wi-fi-so-i-built-a-worse-network-si1tgi0fr"},"datePublished":"2026-07-25T22:50:01.409Z","dateModified":"2026-07-25T22:50:23.987Z","description":"A developer building a video feed app grew frustrated with unrepeatable network conditions during testing and created Universal Media Lab — a local Docker...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/0fbafdca66daa174f988fd802d2ab37b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/0fbafdca66daa174f988fd802d2ab37b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/my-video-feed-worked-on-wi-fi-so-i-built-a-worse-network-si1tgi0fr","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"docker","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"My Video Feed Worked on Wi‑Fi. So I Built a Worse Network"}]}
```

