# Twitch

Published articles for Twitch.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Pure Virtual C++ 2026 Is Tomorrow and On-Demand Sessions Are Now Available

DevFeed: [Pure Virtual C++ 2026 Is Tomorrow and On-Demand Sessions Are Now Available](<https://devfeed.tech/articles/pure-virtual-c-2026-is-tomorrow-and-on-demand-sessions-are-now-available-2963.md>)

Original publisher: [Read original article](<https://devblogs.microsoft.com/cppblog/pure-virtual-cpp-2026-is-tomorrow-and-on-demand-sessions-are-now-available/>)

Author: Marian Luparu

Published: 2026-07-20T16:05:54Z

Content type: news

Language: en

Sources: [C++ Team Blog](<https://devfeed.tech/sources/c-team-blog.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [MSVC](<https://devfeed.tech/topics/msvc.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Vcpkg](<https://devfeed.tech/topics/vcpkg.md>), [GitHub Copilot CLI](<https://devfeed.tech/topics/github-copilot-cli.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [blog](<https://devfeed.tech/tags/blog.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [msvc](<https://devfeed.tech/tags/msvc.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pure-virtual-c-plus-plus](<https://devfeed.tech/tags/pure-virtual-c-plus-plus.md>), [release](<https://devfeed.tech/tags/release.md>), [synthetic](<https://devfeed.tech/tags/synthetic.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

Pure Virtual C++ 2026 is a free virtual conference whose on-demand sessions are already available on YouTube. The article previews the live broadcast and highlights sessions on Sample Profile-Guided Optimization, C++ tooling, package management, MSVC, and C++ standards.

### Source excerpt

The on-demand sessions for Pure Virtual C++ 2026 are available now on YouTube. Watch seven talks on SPGO, vcpkg + Copilot CLI, CMake Tools, PackageReference, MSVC upgrades, and C++23/26 status -- then join us live tomorrow. The post Pure Virtual C++ 2026 Is Tomorrow and On-Demand Sessions Are Now Available appeared first on C++ Team Blog.

## Romm - Self-Hosted ROM Manager with EmulatorJS Baked In

DevFeed: [Romm - Self-Hosted ROM Manager with EmulatorJS Baked In](<https://devfeed.tech/articles/romm-self-hosted-rom-manager-with-emulatorjs-baked-in-10737.md>)

Original publisher: [Read original article](<https://noted.lol/romm/>)

Author: Jeremy

Published: 2026-07-01T17:22:00Z

Content type: tutorial

Language: en

Sources: [Noted](<https://devfeed.tech/sources/noted.md>)

Topics: [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [Docker Compose](<https://devfeed.tech/topics/docker-compose.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Twitch](<https://devfeed.tech/topics/twitch.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [browser](<https://devfeed.tech/tags/browser.md>), [docker](<https://devfeed.tech/tags/docker.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [self-hosted-games-administrative-utilities-control-panels](<https://devfeed.tech/tags/self-hosted-games-administrative-utilities-control-panels.md>), [tool](<https://devfeed.tech/tags/tool.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

This article introduces Romm, a self-hosted tool for organizing game ROM collections and playing supported games in a browser through EmulatorJS. It explains setup with Docker Compose, including obtaining Twitch API credentials through IGDB, and notes folder-structure requirements and database issues with very large ROM collections.

### Source excerpt

Bring back childhood nostalgia with classic games by self-hosting Romm. A tool for organizing and playing ROM based games.

## Press start: How controllers shaped video game design--and where interfaces may go next

DevFeed: [Press start: How controllers shaped video game design--and where interfaces may go next](<https://devfeed.tech/articles/press-start-how-controllers-shaped-video-game-design-and-where-interfaces-may-go-next-10013.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/press-start-video-game-navigation/>)

Author: Aashrey Sharma

Published: 2026-01-05T10:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [User interface design](<https://devfeed.tech/topics/ui-design.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>)

Tags: [games](<https://devfeed.tech/tags/games.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [map](<https://devfeed.tech/tags/map.md>), [music](<https://devfeed.tech/tags/music.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [ux](<https://devfeed.tech/tags/ux.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

A UX designer at Epic Games examines how video game controllers shaped navigation principles and interface design. The article traces the evolution from simple game screens to complex systems of menus, tabs, maps, inventories, and other features, and considers what game navigation may teach the next generation of interfaces.

### Source excerpt

Aashrey Sharma, a UX designer at Epic Games, shares what video game navigation can teach us about building the next generation of interfaces.

## Angular Space Announces Its First Meetup on the Future of Signals

DevFeed: [Angular Space Announces Its First Meetup on the Future of Signals](<https://devfeed.tech/articles/first-angular-space-meetup-date-37465.md>)

Original publisher: [Read original article](<https://www.angularspace.com/first-angular-space-meetup-date/>)

Author: Daniel Glejzner

Published: 2025-08-20T14:58:46Z

Content type: news

Language: en

Sources: [Daniel Glejzner](<https://devfeed.tech/sources/daniel-glejzner.md>)

Topics: [Angular](<https://devfeed.tech/topics/angular.md>), [Front end](<https://devfeed.tech/topics/frontend.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [forms](<https://devfeed.tech/tags/forms.md>), [live-stream](<https://devfeed.tech/tags/live-stream.md>), [meetup](<https://devfeed.tech/tags/meetup.md>), [migration](<https://devfeed.tech/tags/migration.md>), [news](<https://devfeed.tech/tags/news.md>), [router](<https://devfeed.tech/tags/router.md>), [rxjs](<https://devfeed.tech/tags/rxjs.md>), [signal](<https://devfeed.tech/tags/signal.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

Angular Space announces its first meetup, focused on the future of Signals in Angular. The event will discuss Signals in new and existing projects, library adoption, RxJS interoperability, migration strategies, and production use cases.

### Source excerpt

Finally!!! First Angular Space Meetup Date!! Signals are rewriting how we think about reactivity in Angular -> From v16 signal/computed/effect -> to stabilized resources in v20 -> to upcoming forms & router improvements... the journey has just begun. That's why our first Angular Space Meetup

## Layoffs in Responsible AI Teams

DevFeed: [Layoffs in Responsible AI Teams](<https://devfeed.tech/articles/layoffs-in-responsible-ai-teams-36956.md>)

Original publisher: [Read original article](<https://shostack.org/blog/responsible-ai-layoffs/>)

Author: Adam

Published: 2023-04-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Shostack & Friends Blog](<https://devfeed.tech/sources/shostack-friends-blog.md>)

Topics: [responsible-ai](<https://devfeed.tech/topics/responsible-ai.md>), [ai-ethics](<https://devfeed.tech/topics/ai-ethics.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>), [Twitch](<https://devfeed.tech/topics/twitch.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-ethics](<https://devfeed.tech/tags/ai-ethics.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [responsible-ai](<https://devfeed.tech/tags/responsible-ai.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

This opinion examines layoffs in responsible AI teams at companies including Microsoft and Twitch. It argues that ethical AI work may need to become more actionable for software development, while also noting the need for transparency, accountability, and regulation of AI systems.

### Source excerpt

Some inferences from layoffs in responsible AI teams

## We're proud partners with ThePrimeagen

DevFeed: [We're proud partners with ThePrimeagen](<https://devfeed.tech/articles/we-re-proud-partners-with-theprimeagen-6105.md>)

Original publisher: [Read original article](<https://turso.tech/blog/were-proud-partners-with-theprimeagen-155d549f4b14>)

Author: Glauber Costa

Published: 2023-03-29T00:00:00Z

Content type: article

Language: en

Sources: [Turso Blog](<https://devfeed.tech/sources/turso-blog.md>)

Topics: [Turso](<https://devfeed.tech/topics/turso.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [libSQL](<https://devfeed.tech/topics/libsql.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [cloud](<https://devfeed.tech/tags/cloud.md>), [creators](<https://devfeed.tech/tags/creators.md>), [libsql](<https://devfeed.tech/tags/libsql.md>), [offline](<https://devfeed.tech/tags/offline.md>), [servers](<https://devfeed.tech/tags/servers.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [sync](<https://devfeed.tech/tags/sync.md>), [turso](<https://devfeed.tech/tags/turso.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [work](<https://devfeed.tech/tags/work.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

The article announces Turso's partnership with ThePrimeagen and includes a description of an older version of Turso. It describes Turso as a ground-up rewrite of SQLite and explains that Turso Cloud supports querying databases over the wire, syncing them with devices and servers, and offline use. A notice explains that the older edge-replication concept and legacy libSQL SDKs have since been replaced.

### Source excerpt

When my first kid was around one year old, I developed a bad case of insomnia. He was a terrible sleeper, and would wake up frequently. I started leaving the bed and sleeping on the couch, which was...

## Year in Review: 2022

DevFeed: [Year in Review: 2022](<https://devfeed.tech/articles/year-in-review-2022-37583.md>)

Original publisher: [Read original article](<https://www.taniarascia.com/2022-into-2023/>)

Author: hello@taniarascia.com

Published: 2023-01-02T00:00:00Z

Content type: opinion

Language: en

Sources: [Tania Rascia](<https://devfeed.tech/sources/tania-rascia.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Obsidian](<https://devfeed.tech/topics/obsidian-md.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [gaming](<https://devfeed.tech/tags/gaming.md>), [iphone](<https://devfeed.tech/tags/iphone.md>), [life](<https://devfeed.tech/tags/life.md>), [mac](<https://devfeed.tech/tags/mac.md>), [obsidian](<https://devfeed.tech/tags/obsidian.md>), [review](<https://devfeed.tech/tags/review.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [windows](<https://devfeed.tech/tags/windows.md>), [year-in-review](<https://devfeed.tech/tags/year-in-review.md>)

### AI overview

A personal year-in-review covering the author's hopes and experiences around the start of 2023, along with recommendations for television, film, books, apps, and gaming. The author also discusses switching from Bear and Todoist to Obsidian for Markdown-based notes and todos with synchronization across Mac, Windows, and iPhone.

### Source excerpt

Happy New Year, friends! Time to write another year in review. This will be the seventh time I've done this. Here are all the previous ones...

## Firebase team member Malcolm Deck discusses his work, interests, and community experiences

DevFeed: [Firebase team member Malcolm Deck discusses his work, interests, and community experiences](<https://devfeed.tech/articles/firebaserfriday-malcolm-deck-16458.md>)

Original publisher: [Read original article](<https://firebase.blog/posts/2022/07/meet-firebaser-malcolm>)

Author: Paulette McCroskey

Published: 2022-07-22T00:00:00Z

Content type: article

Language: en

Sources: [Firebase Blog](<https://devfeed.tech/sources/firebase-blog.md>)

Topics: [Firebase](<https://devfeed.tech/topics/firebase.md>), [coding-community](<https://devfeed.tech/topics/coding-community.md>), [Google](<https://devfeed.tech/topics/google.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [community](<https://devfeed.tech/tags/community.md>), [developer-community](<https://devfeed.tech/tags/developer-community.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [firebaserfriday](<https://devfeed.tech/tags/firebaserfriday.md>), [games](<https://devfeed.tech/tags/games.md>), [google](<https://devfeed.tech/tags/google.md>), [identity](<https://devfeed.tech/tags/identity.md>), [sdks](<https://devfeed.tech/tags/sdks.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

A Firebase team profile introducing Malcolm Deck, who discusses his work on Google Sign-In, Google Account Linking, and Firebase Auth SDKs, along with his favorite Firebase memories, music, games, and online work.

### Source excerpt

Join us for the monthly mini-profiles on Firebase team members, aka "Firebasers", from all around the world! Learn about their backgrounds...

## Kibeth Codes Twitch Highlights: Exploring Jetpack Compose in Habitica

DevFeed: [Kibeth Codes Twitch Highlights: Exploring Jetpack Compose in Habitica](<https://devfeed.tech/articles/kibeth-codes-twitch-highlights-1-32065.md>)

Original publisher: [Read original article](<https://www.maiatoday.net/p/kibeth-codes-twitch-highlights-1/>)

Published: 2022-03-02T19:38:36Z

Content type: article

Language: en

Sources: [maiatoday](<https://devfeed.tech/sources/maiatoday.md>)

Topics: [Twitch](<https://devfeed.tech/topics/twitch.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [App](<https://devfeed.tech/topics/app.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [To-Do](<https://devfeed.tech/topics/todo.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [talk](<https://devfeed.tech/tags/talk.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

Kibeth Codes is a Twitch stream exploring how to add Jetpack Compose to the open source Habitica habit-tracking and to-do app. The post introduces a selection of stream highlights.

### Source excerpt

To practise for live speaking and to explore how to add Jetpack Compose to an existing open source app, I start a twitch stream as kibethcodes. The app I chose to work on is Habitica, a habit tracking/ToDo app that saw it's first commit in 2015. Streaming Tuesdays at 19:00 UTC+2 Here are a selection of highlights of the twitch stream.

## Behind the build: a Q&A with developer Tru Narla

DevFeed: [Behind the build: a Q&A with developer Tru Narla](<https://devfeed.tech/articles/behind-the-build-a-q-a-with-developer-tru-narla-9515.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/behind-the-build-a-qanda-with-developer-tru-narla/>)

Author: Alia Fite

Published: 2021-10-28T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Figma](<https://devfeed.tech/topics/figma.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Slack](<https://devfeed.tech/topics/slack.md>), [Twitch](<https://devfeed.tech/topics/twitch.md>)

Tags: [audio](<https://devfeed.tech/tags/audio.md>), [building](<https://devfeed.tech/tags/building.md>), [code](<https://devfeed.tech/tags/code.md>), [debug](<https://devfeed.tech/tags/debug.md>), [developer](<https://devfeed.tech/tags/developer.md>), [developers](<https://devfeed.tech/tags/developers.md>), [docs](<https://devfeed.tech/tags/docs.md>), [features](<https://devfeed.tech/tags/features.md>), [figma](<https://devfeed.tech/tags/figma.md>), [games](<https://devfeed.tech/tags/games.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [prototyping](<https://devfeed.tech/tags/prototyping.md>), [side-projects](<https://devfeed.tech/tags/side-projects.md>), [software-engineer](<https://devfeed.tech/tags/software-engineer.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

This Q&A profiles developer Tru Narla and her Soundboard widget for FigJam. She describes building an interactive audio experience, learning through documentation and demo projects, collaborating in a private Slack channel, and planning future widgets such as an interactive piano and multiplayer games.

### Source excerpt

We reached out to three developers to learn more about who they are, what they built, and what they're working on next. Tru answers our Q&A and shares the story behind her Soundboard widget.

## trivago Tech Week 2021 in Review

DevFeed: [trivago Tech Week 2021 in Review](<https://devfeed.tech/articles/trivago-tech-week-2021-in-review-28014.md>)

Original publisher: [Read original article](<https://tech.trivago.com/post/2021-10-27-trivagotechweek2021hybridedition/>)

Author: Andreea Conciu-Ruse People person; Cat Lady; Project Manager @ trivago Linkedin profile

Published: 2021-10-27T00:00:00Z

Content type: article

Language: en

Sources: [Trivago](<https://devfeed.tech/sources/trivago.md>)

Topics: [Streaming](<https://devfeed.tech/topics/streaming.md>), [Twitch](<https://devfeed.tech/topics/twitch.md>), [zoom](<https://devfeed.tech/topics/zoom.md>)

Tags: [community](<https://devfeed.tech/tags/community.md>), [engineering-culture](<https://devfeed.tech/tags/engineering-culture.md>), [events](<https://devfeed.tech/tags/events.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [hybrid](<https://devfeed.tech/tags/hybrid.md>), [music](<https://devfeed.tech/tags/music.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [talks](<https://devfeed.tech/tags/talks.md>), [tech](<https://devfeed.tech/tags/tech.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [virtual-event](<https://devfeed.tech/tags/virtual-event.md>), [zoom](<https://devfeed.tech/tags/zoom.md>)

### AI overview

A review of trivago Tech Week 2021, a hybrid event featuring technical talks, exchange forums, guest speakers, gaming, and live music. The article describes how presentations and social activities were made available to both remote and on-campus participants.

### Source excerpt

In the middle of summer 2021, we hosted one of our favourite annual events of the year - trivago Tech Week! This year's tech week had a new, hybrid format, featuring a wide variety of talks and ...

## Tasks Of Affirmation: A New Twitch Live Stream Series

DevFeed: [Tasks Of Affirmation: A New Twitch Live Stream Series](<https://devfeed.tech/articles/tasks-of-affirmation-a-new-twitch-live-stream-series-22843.md>)

Original publisher: [Read original article](<http://androidessence.com/toa-twitch-series/>)

Author: Adam McNeilly

Published: 2021-09-02T00:00:00Z

Content type: article

Language: en

Sources: [Android Essence](<https://devfeed.tech/sources/android-essence.md>)

Topics: [To-Do](<https://devfeed.tech/topics/todo.md>), [Twitch](<https://devfeed.tech/topics/twitch.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [GitHub Issues](<https://devfeed.tech/topics/github-issues.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [github](<https://devfeed.tech/tags/github.md>), [github-issues](<https://devfeed.tech/tags/github-issues.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

The author announces a new Twitch live-stream series, Tasks Of Affirmation, focused on building a more supportive and compassionate to-do list application. The streams will document Android development in real time, including learning, debugging, and project organization with GitHub Projects and GitHub Issues.

### Source excerpt

In the late summer of 2020, I began live streaming on my Twitch channel. We started off by building an Android Study Guide application. The purpose of the application was to build something people would be interested in using, while also taking the opportunity to build an application out in the open. For a number of reasons, discussed in the latest video, I've decided to sunset that project and begin a new live stream series: Tasks Of Affirmation.

## How to Build a Twitch Bot Using TMI.JS (a moderator bot)

DevFeed: [How to Build a Twitch Bot Using TMI.JS (a moderator bot)](<https://devfeed.tech/articles/how-to-build-a-twitch-bot-using-tmi-js-a-moderator-bot-10682.md>)

Original publisher: [Read original article](<https://technotim.com/posts/twitch-bot/>)

Author: Techno Tim

Published: 2020-05-03T14:00:00Z

Content type: tutorial

Language: en

Sources: [Techno Tim](<https://devfeed.tech/sources/techno-tim.md>)

Topics: [Twitch](<https://devfeed.tech/topics/twitch.md>), [Bot](<https://devfeed.tech/topics/bot.md>), [API](<https://devfeed.tech/topics/api.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [npm](<https://devfeed.tech/topics/npm.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [bots](<https://devfeed.tech/tags/bots.md>), [channel](<https://devfeed.tech/tags/channel.md>), [chat](<https://devfeed.tech/tags/chat.md>), [coding](<https://devfeed.tech/tags/coding.md>), [developer](<https://devfeed.tech/tags/developer.md>), [developer-portal](<https://devfeed.tech/tags/developer-portal.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [nodejs](<https://devfeed.tech/tags/nodejs.md>), [npm](<https://devfeed.tech/tags/npm.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [quick-start](<https://devfeed.tech/tags/quick-start.md>), [scopes](<https://devfeed.tech/tags/scopes.md>), [token](<https://devfeed.tech/tags/token.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

A video tutorial demonstrates how to build a Twitch moderator bot with TMI.JS, covering developer portal setup, OAuth scopes, access tokens, JavaScript, NodeJS, and NPM. It also explains inviting the bot to a channel and moderating chat.

### Source excerpt

Let's build a bot! Not a bad bot like a view bot, but bot for good.Let's build a Twitch moderator bot using tmi.js! The Twitch API is powerful and and already has lots of great bots however no bot has the flexibility of creating your own! In this video I will show you how to build a Twitch bot using TMI.JS from start to finish.You'll see how to use the developer portal, set up oauth, set the...

## ThisEmoteDoesNotExist: Training a GAN for Twitch Emotes

DevFeed: [ThisEmoteDoesNotExist: Training a GAN for Twitch Emotes](<https://devfeed.tech/articles/thisemotedoesnotexist-training-a-gan-for-twitch-emotes-20454.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/thisemotedoesnotexist-training-a-gan-for-twitch-emotes-a742b6354b73?source=rss----3ae745429979--engineering>)

Author: Avery Gnolek

Published: 2019-07-24T22:05:46Z

Content type: tutorial

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

Topics: [Twitch](<https://devfeed.tech/topics/twitch.md>), [Deep learning](<https://devfeed.tech/topics/deep-learning.md>), [Keras](<https://devfeed.tech/topics/keras.md>), [datasets](<https://devfeed.tech/topics/datasets.md>), [Python](<https://devfeed.tech/topics/python.md>), [pixel](<https://devfeed.tech/topics/pixel.md>)

Tags: [dataset](<https://devfeed.tech/tags/dataset.md>), [deep-learning](<https://devfeed.tech/tags/deep-learning.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [keras](<https://devfeed.tech/tags/keras.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [neural-networks](<https://devfeed.tech/tags/neural-networks.md>), [python](<https://devfeed.tech/tags/python.md>), [training](<https://devfeed.tech/tags/training.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

A developer describes building a progressive-growing GAN for Twitch emotes as a personal machine-learning project. The article covers scraping roughly 2 million Twitch emote assets, implementing a proof-of-concept GAN with Keras, and training it on a random 200,000-image sample.

### Source excerpt

The idea for this project began when a coworker and I were talking about NVIDIA's photo-realistic generated human faces using StyleGAN and they mentioned "I wish someone made one of those for Twitch emotes." I had always wanted to take some time to learn more about convolution neural networks and was in the middle of a machine learning project for work, so it seemed like trying to build this would be a quick and relevant personal project. The original plan (with my time estimates): Scrape all of the Twitch emote image assets (1 day) Write a progressive growing GAN implementation using Keras as a proof of concept (1 week) Adapt the emote dataset for use with a real research-caliber GAN implementation (1-2 days) Train the GAN on the emote dataset (1 day) 1 . Scrape all of the emote image assets This part of the project was actually quite straightforward. Twitch stores all of the emote images on a CDN using a monotonically increasing numeric emote_id. Each emote is available in three different sizes (1.0, 2.0, 3.0) corresponding to the resolutions of 28x28, 56x56, and 112x112. emoticons/778927/1.0emoticons/778927/2.0emoticons/v1/778927/3.0 I wrote a quick python scraper which would go through ~2 million emote_ids of three different sizes and download the images locally. Even at a modest 200 requests per second, this was able to finish overnight. In fact, I think the limiting factor for the speed of this step was actually writing the image files to my HDD, not the network requests themselves. So far, I was right on track with my time estimate. 2. Write a progressive growing GAN implementation using Keras as a proof of concept As I had no experience with CNNs or deep learning before this project, I wanted to at least attempt to write a progressive growing GAN myself as a way to learn before switching to an existing implementation. As Twitch emotes are not even power of two sizes, it was not possible to exactly replicate the 4x4 pixel to 128x128 pixel growing architecture

## Go memory ballast: How I learnt to stop worrying and love the heap

DevFeed: [Go memory ballast: How I learnt to stop worrying and love the heap](<https://devfeed.tech/articles/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap-20449.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap-26c2462549a2?source=rss----3ae745429979--engineering>)

Author: Ross Engers

Published: 2019-04-10T21:44:55Z

Content type: article

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Twitch](<https://devfeed.tech/topics/twitch.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [API](<https://devfeed.tech/topics/api.md>), [Amazon EC2](<https://devfeed.tech/topics/amazon-ec2.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>), [nginx](<https://devfeed.tech/topics/nginx.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [ec2](<https://devfeed.tech/tags/ec2.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [gateway](<https://devfeed.tech/tags/gateway.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [latency](<https://devfeed.tech/tags/latency.md>), [load-balancer](<https://devfeed.tech/tags/load-balancer.md>), [memory](<https://devfeed.tech/tags/memory.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [programming](<https://devfeed.tech/tags/programming.md>), [server](<https://devfeed.tech/tags/server.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

A Twitch engineering article explains how a small Go memory-ballast change reduced CPU utilization on API frontend servers by about 30% and peak-load 99th-percentile API latency by about 45%. It describes the Visage gateway, traffic spikes, and the investigation behind the optimization.

### Source excerpt

Go memory ballast: How I learned to stop worrying and love the heap I'm a big fan of small code changes that can have large impact. This may seem like an obvious thing to state, but let me explain: These type of changes often involve diving into and understanding things one is not familiar with. Even with the most well factored code, there is a maintenance cost to each optimization you add, and it's usually (although not always) pretty linear with the amount of lines of code you end up adding/changing. We recently rolled out a small change that reduced the CPU utilization of our API frontend servers at Twitch by ~30% and reduced overall 99th percentile API latency during peak load by ~45%. This blog post is about the change, the process of finding it and explaining how it works. Setting the stage We have a service at Twitch called Visage, that functions as our API frontend. Visage is the central gateway for all externally originating API traffic. It is responsible for a bunch of things, from authorization to request routing, to (more recently) server-side GraphQL. As such, it has to scale to handle user traffic patterns that are somewhat out of our control. As an example, a common traffic pattern we see is a "refresh storm." This occurs when a popular broadcaster's stream drops due to a blip in their internet connectivity. In response, the broadcaster restarts the stream. This usually causes the viewers to repeatedly refresh their pages, and suddenly we have a lot more API traffic to deal with. Visage is a Go application (built with Go 1.11 at the time of this change) that runs on EC2 behind a load balancer. Being on EC2 it scales well horizontally, for the most part. However, even with the magic of EC2 and Auto Scaling groups, we still have the problem of dealing with very large traffic spikes. During refresh storms, we frequently have surges of millions of requests over a few seconds, on the order of 20x our normal load. On top of this, we would see API latency de

## How Twitch Addresses Scalability and Authentication

DevFeed: [How Twitch Addresses Scalability and Authentication](<https://devfeed.tech/articles/how-twitch-addresses-scalability-and-authentication-20451.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/how-twitch-addresses-scalability-and-authentication-718d6ed3c471?source=rss----3ae745429979--engineering>)

Author: Eugene Pivovarov

Published: 2019-03-15T19:13:30Z

Content type: article

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

Topics: [Twitch](<https://devfeed.tech/topics/twitch.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [OAuth 2.0](<https://devfeed.tech/topics/oauth2.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [identity-management](<https://devfeed.tech/tags/identity-management.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [latency](<https://devfeed.tech/tags/latency.md>), [lazy-loading](<https://devfeed.tech/tags/lazy-loading.md>), [oauth-2-0](<https://devfeed.tech/tags/oauth-2-0.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [tls](<https://devfeed.tech/tags/tls.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

This article explains how Twitch's Identity team addressed authentication scalability and performance. It describes reducing login-form latency through prefetching and lazy loading, and reducing downstream validation workload by exchanging OAuth 2.0 access tokens for short-lived JWTs containing user information, scopes, and a digital signature.

### Source excerpt

Curious how Twitch Identity services addresses scalability and performance challenges related to authentication? Last Tuesday, the Twitch Identity team -- which helps Twitch users create and manage their digital identity and owns the services that provide authentication, authorization, and user metadata management -- hosted a Meetup.com event to explain just that. But we're recapping here just for you! First challenge: Login form load The goal of authentication is to verify who the user is. In a typical login flow, the user supplies a password along with a username and the service validates the credentials. Login user interface The Twitch Login form used to load very slowly, as long as 10 seconds in some Asian and Pacific countries. The browser had to make a DNS request for the authentication backend, initiate a TLS connection to authentication service, make a request to load the page, and then make additional requests for more assets. Altogether, there were five round trips and over 150 KB of data transfer. To improve load latency, the team considered a few options: prefetching, connection reuse, inlining, and lazy loading. Ultimately, the solution relies mostly on prefetching by making the login modal part of the main page, but it employs lazy load for fetching heavy assets. As a result, the median load latency dropped as much as 20x from 4.1 sec to 0.2 sec. Second challenge: User session validation At the end of the login flow, the browser obtains a long-lived OAuth 2.0 access token and stores it in a cookie. This token is required for subsequent requests to the Twitch API and the corresponding downstream services. If each service had to validate the OAuth token directly against the token dispensary, the latter would need to handle calls from multiple services for every API request. To reduce the workload, the Identity team implemented an approach that employs self-contained JSON Web Tokens (JWT). Login and request flow In this approach, before forwarding the reque

## Twitch for Android: From Meme to Dream

DevFeed: [Twitch for Android: From Meme to Dream](<https://devfeed.tech/articles/twitch-for-android-from-meme-to-dream-20456.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/twitch-for-android-from-meme-to-dream-141e6b7e8416?source=rss----3ae745429979--engineering>)

Author: Joaquim Verges

Published: 2019-02-26T21:45:39Z

Content type: article

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [test](<https://devfeed.tech/topics/test.md>), [unit test](<https://devfeed.tech/topics/unit-test.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [architecture-pattern](<https://devfeed.tech/tags/architecture-pattern.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [test](<https://devfeed.tech/tags/test.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [ui](<https://devfeed.tech/tags/ui.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>)

### AI overview

Twitch describes how its PogDroid Android app grew from a small app with basic streaming and chat functionality into a larger project. The team redesigned the app, rewrote much of it, introduced a common MVP architecture, and organized code into data, presentation, and view layers to make unit testing easier.

### Source excerpt

Meet PogDroid, our beloved Android app, to watch the latest memes unfold live while on the go. PogDroid started with very humble beginnings, and has seen incredible growth in the past couple of years. We quadrupled the team, redesigned the entire app, and rewrote most of it in only a few months using the latest and greatest Android has to offer. Buckle up: this is PogDroid's epic adventure. Level 1: Meme app with big dreams Back in March 2017, PogDroid was maintained by a very small team of engineers, and covered the most basic functionality of Twitch: browse and watch a stream with Chat. Old PogDroid, before the big makeover Mobile, and Android in particular, was getting more and more users, and the company decided it was time for a serious investment in PogDroid. The plan was to give the app a fresh new look, and build up some important features that were missing. The team grew only a little bit, but were tasked to take on this big project. As with most apps maintained by a very small team, the code structure was a mess. It became clear that such a big redesign compounded with adding new features could not be built cleanly on top of the current foundation. There was no common pattern to build screens, not a single unit test, and a lot of core classes were more than 3,000 lines of code long, with very complex state management, handling everything from network requests to UI rendering. We all agreed that in order to make PogDroid what we were dreaming of, we first needed to rethink its foundations. Step 1: Agree on a common architecture pattern The first thing we did is come up with a common design pattern to build features and screens. We wanted this design pattern to be: easy to understand hard to get wrong flexible enough to be applied to any feature or screen easy to unit test We quickly settled on a straightforward MVP pattern that looks like this: With these layers in mind, it became easy to categorize the type of classes we needed for every feature: Typical c

## How VP9 delivers value for Twitch's esports live streaming

DevFeed: [How VP9 delivers value for Twitch's esports live streaming](<https://devfeed.tech/articles/how-vp9-delivers-value-for-twitch-s-esports-live-streaming-20450.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/how-does-vp9-deliver-value-for-twitchs-esports-live-streaming-35db26f6322f?source=rss----3ae745429979--engineering>)

Author: Yueshi Shen

Published: 2018-12-19T21:12:17Z

Content type: article

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

Topics: [Twitch](<https://devfeed.tech/topics/twitch.md>), [Compression](<https://devfeed.tech/topics/compression.md>), [fpga](<https://devfeed.tech/topics/fpga.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Playback](<https://devfeed.tech/topics/playback.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [compression](<https://devfeed.tech/tags/compression.md>), [decoding](<https://devfeed.tech/tags/decoding.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [fpga](<https://devfeed.tech/tags/fpga.md>), [h-264](<https://devfeed.tech/tags/h-264.md>), [live-streaming](<https://devfeed.tech/tags/live-streaming.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [videos](<https://devfeed.tech/tags/videos.md>), [vp9](<https://devfeed.tech/tags/vp9.md>)

### AI overview

This article explains how Twitch selected FPGA hardware for real-time VP9 encoding of premium esports and partner live streams. It discusses VP9's compression advantages and implementation challenges, and reports at least 25% bitrate savings compared with the highest-quality H.264 encoders used in Twitch's production.

### Source excerpt

By: Akrum Elkhazin, Video Algorithm Architect, NGCodec, akrum.elkhazin@ngcodec.com Avinash Ramachandran, Video Software Architect, NGCodec, avinash.ramachandran@ngcodec.com Roshan Baliga, Product Manager, Google, rdb@google.com Jai Krishnan, Product Manager, Google, jaikk@google.com Tarek Amara, Senior Video Specialist, Twitch, amatarek@twitch.tv Alex Converse, Senior Software Engineer, Twitch, alexconv@twitch.tv Yueshi Shen, Principal Research Engineer, Twitch, yshen@twitch.tv Summary: VP9 will soon help Twitch offer a better viewing experience for premium esports and partner channels Video compression is the key to successful delivery of digital video across various applications like broadcast, teleconference, surveillance, and online streaming services. Since 2003 (i.e., 15 years ago), H.264 has been the state-of-the-art video compression format and has enabled HDTV, Blu-ray Disc, Internet video websites (e.g., YouTube, Twitch), and so on. Nevertheless, according to Twitch's recent analysis, H.264 has reached its compression performance limit, particularly for real-time encoding of gaming content at the HD resolution (1080p60). On the other hand, newer-generation video standards, namely VP9, HEVC, and AV1, show significant compression gain, which can bring considerable commercial benefits to content platforms (e.g., offering viewers better video quality, reducing the video loading time and the buffering rate, increasing the customer reach, decreasing the IP transit cost). Currently, although decoding and playback of VP9 video are widely supported on devices and browsers used by Twitch's audience, encoding gaming video content with a high efficiency and real-time performance is a substantial challenge due to the high complexity of VP9. Through a rigorous feasibility study, we have eventually selected FPGA as the hardware platform for real-time VP9 encoding and are deploying it to broadcast our premium eSports and partner channels in the near future (please watch t

## Artisanal Objective-C Sum Types

DevFeed: [Artisanal Objective-C Sum Types](<https://devfeed.tech/articles/artisanal-objective-c-sum-types-20448.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/artisanal-objective-c-sum-types-8ea1ab9da342?source=rss----3ae745429979--engineering>)

Author: Heath Borders

Published: 2018-05-14T18:49:35Z

Content type: tutorial

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

Topics: [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [enum](<https://devfeed.tech/topics/enum.md>), [C](<https://devfeed.tech/topics/c.md>), [Swift](<https://devfeed.tech/topics/swift.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [enum](<https://devfeed.tech/tags/enum.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

The article explains how to represent sum types in Objective-C. It contrasts Swift enums and C unions with enums, then presents a class-based, callback-driven approach for modeling distinct Objective-C object types under ARC.

### Source excerpt

A sum type combines many possible differently-typed values into a single value, expressed in Swift as an enum. https://medium.com/media/6217cfe231386e04ce2e7228080fae7a/href In C, we can achieve the power of Swift's enum with a combination of a C union and a C enum: https://medium.com/media/3f1696d38fcec2600a942ffbe03c8cd4/href First, I'm sure you notice Swift's enum is more concise, but it's also safer. In C, the compiler doesn't prevent us from either creating an example with a mismatched type or from consuming a union as a mismatched type: https://medium.com/media/82f0586deab20a07abc615a9e459028e/href Trying to mismatch our enum types in Swift won't compile. Yay! https://medium.com/media/03d37cc33364b48d851beb4ccf38a97d/href Unfortunately, in Objective-C, we can't use Objective-C objects in structs or unions in ARC, so we can't use our C sum type with Objective-C objects. However, we can build a similar construct by hand. First, we need a class to capture all of the distinct types, and expose them through a single block-based callback interface: https://medium.com/media/78216b190ad6501c26ad89d0864b1c5c/href We must declare forward references for our distinct types, which we'll define later. We mark new and init as NS_UNAVAILABLE so that consumers won't be able to instantiate our base class directly. If they use -Wobjc-designated-initializers, they won't be able to subclass our base class either (without importing ExamplePrivate.h, which we won't distribute to them). Next, we'll declare our distinct types: https://medium.com/media/329743de725ccd196c3f535306714cf9/hrefhttps://medium.com/media/1785598f614b3963a0a39ec81d8c5dac/href They're simply plain-old-objective-c-objects that extend our base class. Our base class and our distinct types all have switchFoo:bar:. The distinct types will simply call the respective callback block with self. The base class will have an empty implementation. We use NS_REQUIRES_SUPER on switchFoo:bar: because if we add another distinct

## Twirp: An RPC Framework for Go Focused on Simplicity

DevFeed: [Twirp: An RPC Framework for Go Focused on Simplicity](<https://devfeed.tech/articles/twirp-a-sweet-new-rpc-framework-for-go-20455.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/twirp-a-sweet-new-rpc-framework-for-go-5f2febbf35f?source=rss----3ae745429979--engineering>)

Author: Spencer Nelson

Published: 2018-01-16T20:19:57Z

Content type: release

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

Topics: [Twirp](<https://devfeed.tech/topics/twirp.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [developer](<https://devfeed.tech/tags/developer.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [http](<https://devfeed.tech/tags/http.md>), [new-features](<https://devfeed.tech/tags/new-features.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [twirp](<https://devfeed.tech/tags/twirp.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

Twitch releases Twirp, an open-source RPC framework for communication between backend servers written in Go. It uses structured RPCs over HTTP 1.1 and emphasizes simplicity, stability, and modularity compared with REST APIs and gRPC.

### Source excerpt

Twirp is a new RPC framework available under an Apache 2 open source license. Today Twitch is releasing an RPC framework we use for communication between backend servers written in Go. It's called Twirp, and it's available now under an Apache 2 open source license. Twirp has been tremendously successful at Twitch -- it has grown in usage exponentially, roughly tripling every three months as more and more internal teams continue to adopt it due to its advantages over "REST" APIs or gRPC, its two closest competitors. Structured RPCs are much easier to design and maintain than URL-oriented REST APIs, as they let you focus on business logic instead of routing schemes. Changing APIs to add new fields or methods is much easier and the peculiarities of serialization (like, say, JSON's lack of 64-bit numbers) can be hidden from view. gRPC implements structured RPCs but we found that its complexity and sprawl brought an unacceptable number of bugs -- and we had trouble justifying its hard http/2 requirement. Twirp is a structured RPC framework, but with an emphasis on simplicity. It works on HTTP 1.1, chooses stability and modularity over an expansive feature set, and then gets out of the way. Twirp is so simple, in fact, that you can make valid requests on the command line with cURL without much thought. It's as simple as a Content-Type header, a proper payload, and the right URL -- all of which are very well-standardized. So, for example: # This is a valid Twirp request: curl \ -header 'Content-Type:application/json' \ -data '{"user": "spencer", "email": "spencer@twitch.tv"}' \ http://localhost:9090/twirp/twitch.example.EmailBoss/UpdateEmail We think you'll want to use Twirp if you're working in a service-oriented architecture and program mostly in Go. We also think you'll be able to drop it into your system one service at a time, even if you're using several non-Go languages. The core design of Twirp is language-agnostic and we're planning to expand into new languages, but o

## Live Video Transmuxing/Transcoding: FFmpeg vs TwitchTranscoder, Part I

DevFeed: [Live Video Transmuxing/Transcoding: FFmpeg vs TwitchTranscoder, Part I](<https://devfeed.tech/articles/live-video-transmuxing-transcoding-ffmpeg-vs-twitchtranscoder-part-i-20452.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/live-video-transmuxing-transcoding-ffmpeg-vs-twitchtranscoder-part-i-489c1c125f28?source=rss----3ae745429979--engineering>)

Author: Yueshi Shen

Published: 2017-10-10T18:40:03Z

Content type: article

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

Topics: [FFmpeg (Fast Forward Moving Picture Experts Group)](<https://devfeed.tech/topics/ffmpeg.md>), [Twitch](<https://devfeed.tech/topics/twitch.md>), [Transcodings](<https://devfeed.tech/topics/transcodings.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [stream-processing](<https://devfeed.tech/topics/stream-processing.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ffmpeg](<https://devfeed.tech/tags/ffmpeg.md>), [http](<https://devfeed.tech/tags/http.md>), [live-streaming](<https://devfeed.tech/tags/live-streaming.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [stream-processing](<https://devfeed.tech/tags/stream-processing.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [transcoder](<https://devfeed.tech/tags/transcoder.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

This first part of a two-part series explains Twitch's live video processing pipeline and compares using FFmpeg with Twitch's in-house TwitchTranscoder. It describes how RTMP uploads are converted into multiple-bitrate HLS variants and outlines the live transcoding requirements that FFmpeg meets or does not meet.

### Source excerpt

By: Jeff Gong, Software Engineer, jeffgon@twitch.tv Sahil Dhanju, Software Engineer Intern Chih-Chiang Lu, Senior Software Engineer, chihchil@twitch.tv Yueshi Shen, Principal Research Engineer, yshen@twitch.tv Special thanks go to Christopher Kennedy, Staff Video Engineer at Crunchyroll/Ellation John Nichols, Principal Software Engineer at Xilinx, jnichol@xilinx.com for their information on FFmpeg and reviewing this article. Note: This is the first part of a 2-part series. Please read part 2 after finishing this article. Background Twitch is the world's leading live streaming platform for video games, esports, and other emerging creative content. Every month, more than 2.2 million unique content creators stream or upload video on our website. At its peak, Twitch ingests tens of thousands of concurrent live video streams and delivers them to viewers across the world. Figure 1 depicts the architecture of our live video Content Delivery Network (CDN) which delivers tens of thousands of concurrent live streams internationally. Figure 1: Architecture of Twitch's Live Video CDN Twitch, like many other live streaming services, receives live stream uploads in Real-Time Messaging Protocol (RTMP) from its broadcasters. RTMP is a protocol designed to stream video and audio on the Internet, and is mainly used for point to point communication. To then scale our live stream content to countless viewers, Twitch uses HTTP Live Streaming (HLS), an HTTP-based media streaming communications protocol that most video websites also use. Within the live stream processing pipeline, the transcoder module is in charge of converting an incoming RTMP stream into the HLS format with multiple variants (e.g., 1080p, 720p, etc.). These variants have different bitrates so that viewers with different levels of download bandwidth are able to consume live video streams at the best possible quality for their connection. Figure 2 depicts the input and output of the transcoder module in our live video CD

## What I Learned from Live-Streaming Creative Work on Twitch

DevFeed: [What I Learned from Live-Streaming Creative Work on Twitch](<https://devfeed.tech/articles/live-streaming-my-designs-working-title-touchlab-38116.md>)

Original publisher: [Read original article](<https://touchlab.co/2016-2-live-streaming-need-title>)

Published: 2016-03-01T17:10:55Z

Content type: opinion

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Twitch](<https://devfeed.tech/topics/twitch.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Learning](<https://devfeed.tech/topics/learning.md>)

Tags: [creative](<https://devfeed.tech/tags/creative.md>), [design](<https://devfeed.tech/tags/design.md>), [featured](<https://devfeed.tech/tags/featured.md>), [hand-lettering](<https://devfeed.tech/tags/hand-lettering.md>), [live-streaming](<https://devfeed.tech/tags/live-streaming.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

The article reflects on a live-streamed Design Notes podcast with hand-lettering artist Dina Rodriguez and the author's early experience streaming creative work on Twitch. It discusses sharing the creative process, teaching and learning with a live audience, and receiving feedback and encouragement.

### Source excerpt

For the first Design Notes podcast of 2016, I interviewed artist Dina Rodriguez of LetterShoppe. But this episode of Design Notes wasn't like most...

## DDNet Live: Twitch spectates an online game

DevFeed: [DDNet Live: Twitch spectates an online game](<https://devfeed.tech/articles/ddnet-live-twitch-spectates-an-online-game-30812.md>)

Original publisher: [Read original article](<https://hookrace.net/blog/ddnet-live/>)

Published: 2016-01-09T23:00:00Z

Content type: tutorial

Language: en

Sources: [Dennis Felsing](<https://devfeed.tech/sources/dennis-felsing.md>)

Topics: [Twitch](<https://devfeed.tech/topics/twitch.md>), [FFmpeg (Fast Forward Moving Picture Experts Group)](<https://devfeed.tech/topics/ffmpeg.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [intel](<https://devfeed.tech/topics/intel.md>), [Server](<https://devfeed.tech/topics/server.md>), [Nim](<https://devfeed.tech/topics/nim.md>)

Tags: [ffmpeg](<https://devfeed.tech/tags/ffmpeg.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [intel](<https://devfeed.tech/tags/intel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [livestream](<https://devfeed.tech/tags/livestream.md>), [nim](<https://devfeed.tech/tags/nim.md>), [server](<https://devfeed.tech/tags/server.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [twitch](<https://devfeed.tech/tags/twitch.md>)

### AI overview

The article describes setting up a continuous DDNet livestream on Twitch from Linux using FFmpeg, a low-power J1900 home server, and a virtual display. It also explains using Twitch chat and DDNet FIFO command input so viewers can choose which players to spectate.

### Source excerpt

Last night I had an idea and implemented it, soo let's see what will happen. But first, the idea: Have a livestream [1] of DDNet running non-stop [2] that always shows some interesting [3] players on the server. The resulting livestream is running on Twitch. All the scripts are on Github 1. Livestream It's surprisingly simple to livestream from Linux to Twitch. Only FFmpeg is needed: #!/bin/sh INRES="1280x720" # input resolution FPS="30" # target FPS GOP="60" # i-frame interval, should be double of FPS, GOPMIN="30" # min i-frame interval, should be equal to fps, THREADS="2" CBR="2000k" # constant bitrate (should be between 1000k - 3000k) QUALITY="ultrafast" # one of the many FFMPEG preset AUDIO_SRATE="44100" AUDIO_CHANNELS="2" # 1 for mono output, 2 for stereo AUDIO_ERATE="96k" # audio encoding rate SERVER="live-fra" # http://bashtech.net/twitch/ingest.php for list source ./secret.sh ffmpeg -v 0 -f x11grab -s "$INRES" -r "$FPS" -i :0.0 \ -f alsa -i pulse -f flv -ac $AUDIO_CHANNELS \ -b:a $AUDIO_ERATE -ar $AUDIO_SRATE \ -vcodec libx264 -g $GOP -keyint_min $GOPMIN -b:v $CBR \ -minrate $CBR -maxrate $CBR -vf "format=yuv420p"\ -preset $QUALITY -acodec libmp3lame -threads $THREADS \ -strict normal -bufsize $CBR \ "rtmp://$SERVER.twitch.tv/app/$STREAM_KEY" This works pretty well, but takes quite a bit of CPU on my old computer. So instead I wanted to run it on my new server with a Haswell-era J1900 CPU. Possible ways to improve performance: Use an OpenGL recorder instead of x11grab Get Intel Quick Sync Video working for hardware H264 encoding 2. Running Non-Stop My server is a small and cheap ASRock Q1900-ITX: The nice part is that it's passively cooled and quite power efficient, drawing only 5 Watts in idle. This machine has been running as my home server for quite some time, but barely gets any action. Let's change that! The X server starts without problems even without any monitors attached, the only thing that's left to do is increasing the framebuffer size so that ou