# Doom

Published articles for Doom.

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

## 'Ship a good game, learn from it, and build from there:' Lessons from going indie after a decade at id Software

DevFeed: ['Ship a good game, learn from it, and build from there:' Lessons from going indie after a decade at id Software](<https://devfeed.tech/articles/ship-a-good-game-learn-from-it-and-build-from-there-lessons-from-going-indie-after-a-decade-at-id-software-15094.md>)

Original publisher: [Read original article](<https://www.gamedeveloper.com/production/-ship-a-good-game-learn-from-it-and-build-from-there-lessons-from-going-indie-after-a-decade-at-id-software>)

Author: Chris Kerr

Published: 2026-09-10T18:56:42Z

Content type: news

Language: en

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

Topics: [Game Development](<https://devfeed.tech/topics/game-development.md>), [Development](<https://devfeed.tech/topics/development.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>)

Tags: [business](<https://devfeed.tech/tags/business.md>), [careers](<https://devfeed.tech/tags/careers.md>), [company](<https://devfeed.tech/tags/company.md>), [development](<https://devfeed.tech/tags/development.md>), [doom](<https://devfeed.tech/tags/doom.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [games](<https://devfeed.tech/tags/games.md>), [industry](<https://devfeed.tech/tags/industry.md>), [marketing](<https://devfeed.tech/tags/marketing.md>), [money](<https://devfeed.tech/tags/money.md>), [production](<https://devfeed.tech/tags/production.md>), [publisher](<https://devfeed.tech/tags/publisher.md>), [team](<https://devfeed.tech/tags/team.md>)

### AI overview

Game Developer interviews Tony Garza and Richard O'Neal about leaving id Software, founding the indie studio Turnkey Games, and developing the horror adventure Apart. They describe bootstrapping the company, growing the team gradually, controlling overhead, and directing spending toward development and essential business costs.

### Source excerpt

We sit down with Doom Eternal art director Tony Garza and fellow id alum Richard O'Neal to hear about their journey into the world of indie development through Turnkey Games.

## The majority of Doom: The Dark Ages' DLC got made 'in three or four months'

DevFeed: [The majority of Doom: The Dark Ages' DLC got made 'in three or four months'](<https://devfeed.tech/articles/the-majority-of-doom-the-dark-ages-dlc-got-made-in-three-or-four-months-15080.md>)

Original publisher: [Read original article](<https://www.gamedeveloper.com/business/the-majority-of-doom-the-dark-ages-dlc-got-made-in-three-or-four-months>)

Author: Diego Argüello

Published: 2026-09-01T18:03:04Z

Content type: news

Language: en

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

Topics: [Game Development](<https://devfeed.tech/topics/game-development.md>), [Xbox](<https://devfeed.tech/topics/xbox.md>)

Tags: [doom](<https://devfeed.tech/tags/doom.md>), [energy](<https://devfeed.tech/tags/energy.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [job-cuts](<https://devfeed.tech/tags/job-cuts.md>)

### AI overview

A former Id Software producer says most of Doom: The Dark Ages - Revelations was made in three or four months under severe crunch. He describes repeated 60- to 80-hour weeks and says the team faced intense pressure to meet expected quality levels.

### Source excerpt

The team reportedly worked 60 to 80 hour weeks to get the project out the door.

## Running unmodified Doom in the SQLite bytecode language

DevFeed: [Running unmodified Doom in the SQLite bytecode language](<https://devfeed.tech/articles/running-unmodified-doom-in-the-sqlite-bytecode-language-6029.md>)

Original publisher: [Read original article](<https://turso.tech/blog/running-unmodified-doom-in-the-sqlite-bytecode-language>)

Author: Glauber Costa

Published: 2026-07-17T00:00:00Z

Content type: article

Language: en

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

Topics: [Database](<https://devfeed.tech/topics/database.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [.NET](<https://devfeed.tech/topics/net.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [c](<https://devfeed.tech/tags/c.md>), [doom](<https://devfeed.tech/tags/doom.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rust](<https://devfeed.tech/tags/rust.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [turso](<https://devfeed.tech/tags/turso.md>)

### AI overview

Turso ports unmodified Doom to SQLite's VDBE bytecode VM and runs it in the browser. The article explains Turso's database-bytecode ambitions and its C-to-VDBE compiler.

### Source excerpt

We made Turso into the LLVM of databases: it now runs Doom

## More whimsical OEIS sequences

DevFeed: [More whimsical OEIS sequences](<https://devfeed.tech/articles/more-whimsical-oeis-sequences-40522.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/shortform/2026-05-22-1528/>)

Published: 2026-05-22T22:28:34Z

Content type: opinion

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Sequences](<https://devfeed.tech/topics/sequences.md>)

Tags: [depths-of-oeis](<https://devfeed.tech/tags/depths-of-oeis.md>), [doom](<https://devfeed.tech/tags/doom.md>), [oeis](<https://devfeed.tech/tags/oeis.md>), [sequences](<https://devfeed.tech/tags/sequences.md>), [shortform](<https://devfeed.tech/tags/shortform.md>), [xkcd](<https://devfeed.tech/tags/xkcd.md>)

### AI overview

An informal survey of whimsical OEIS sequences, including sequences inspired by XKCD, non-reduced fractions, hexadecimal patterns, James Bond primes, random tables, and references to the number 666.

### Source excerpt

Here are some more whimsical OEIS sequences I came across. XKCD 2016 joked that "OEIS keeps rejecting my submissions," including one that gives "Integers in increasing order of width when printed in Helvetica." Well, two days after that comic was published (2018-07-09), Hugo Pfoertner published A316600, with a very precise definition. Then he did Arial. Randall Munroe missed a huge opportunity to commit to his bit and actually try to submit some of his sequences before publishing the comic.

## The Performance Inequality Gap, 2026

DevFeed: [The Performance Inequality Gap, 2026](<https://devfeed.tech/articles/the-performance-inequality-gap-2026-26562.md>)

Original publisher: [Read original article](<https://infrequently.org/2025/11/performance-inequality-gap-2026/>)

Author: Alex Russell

Published: 2025-11-24T00:00:00Z

Content type: opinion

Language: en

Sources: [Alex Russell](<https://devfeed.tech/sources/alex-russell.md>)

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [Core Web Vitals](<https://devfeed.tech/topics/core-web-vitals.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Network](<https://devfeed.tech/topics/network.md>), [TLS (Transport Layer Security)](<https://devfeed.tech/topics/tls.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [core-web-vitals](<https://devfeed.tech/tags/core-web-vitals.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [devices](<https://devfeed.tech/tags/devices.md>), [doom](<https://devfeed.tech/tags/doom.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [network](<https://devfeed.tech/tags/network.md>), [performance](<https://devfeed.tech/tags/performance.md>), [tls](<https://devfeed.tech/tags/tls.md>), [webdev](<https://devfeed.tech/tags/webdev.md>)

### AI overview

This article updates network and device assumptions for 2026 and derives resource budgets for three- and five-second page loads. It argues that growing page sizes and JavaScript payloads worsen performance inequality, while noting that fewer than half of mobile origins pass Core Web Vitals.

### Source excerpt

The Budget, 2026 Edition Let's cut to the chase, shall we? Updated network test parameters for 2026 are: 9 Mbps downlink 3 mbps uplink 100 millisecond RTT Regarding devices, my updated recommendations are the Samsung Galaxy A24 4G (or equivalent) and the HP 14. The goal of these recommendations is to emulate a 75th percentile user experience, meaning a full quarter of devices and networks will perform worse than this baseline. Plugging these parameters into the updated budget calculator, we can derive critical-path resource thresholds for three and five second page load targets. Per usual, we consider pages built in two styles: JS-light, where only 15% of critical-path bytes are JavaScript, and JS-heavy, comprised of 50% JavaScript: Time JS-light (MiB) JS-heavy Total JS Other Total JS Other 3 sec 2.0 0.3 1.7 1.2 0.62 0.62 5 sec 3.7 0.57 3.2 2.3 1.15 1.15 Note: Budgets account for two TLS connections. Many sites initiate more early connections, reducing time available to download resources. Using four connections cuts the three-second budget by 350 KiB, to 1.5 MiB / 935 KiB. The five-second budget loses nearly half a megabyte, dropping to 3.2 / 1.9 MiB. It pays to adopt H/2 or H/3 and consolidate connections. These budgets are extremely generous. Even the target of three seconds is lavish; most sites should be able to put up interactive content much sooner for nearly all users. Meanwhile, sites are ballooning. The median mobile page is now 2.6 MiB, blowing past the size of DOOM (2.48 MiB) in April. The 75th percentile site is now larger than two copies of DOOM. P90+ sites are more than 4.5x larger, and sizes at each point have doubled over the past decade. Put another way, the median mobile page is now 70 times larger than the total storage of the computer that landed men on the moon. Median page weights are more than 2.5x larger for mobile sites than a decade ago, and sites at the 75th percentile are now 4x their 2015 weight. An outsized contributor to this bloat co

## Doom GPU Flame Graphs

DevFeed: [Doom GPU Flame Graphs](<https://devfeed.tech/articles/doom-gpu-flame-graphs-13603.md>)

Original publisher: [Read original article](<http://www.brendangregg.com/blog//2025-05-01/doom-gpu-flame-graphs.html>)

Published: 2025-04-30T14:00:00Z

Content type: article

Language: en

Sources: [Brendan Gregg's Blog](<https://devfeed.tech/sources/brendan-gregg-s-blog.md>)

Topics: [GPU](<https://devfeed.tech/topics/gpu.md>), [shaders](<https://devfeed.tech/topics/shaders.md>), [intel](<https://devfeed.tech/topics/intel.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [doom](<https://devfeed.tech/tags/doom.md>), [dust](<https://devfeed.tech/tags/dust.md>), [flame-graph](<https://devfeed.tech/tags/flame-graph.md>), [games](<https://devfeed.tech/tags/games.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [intel](<https://devfeed.tech/tags/intel.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [performance](<https://devfeed.tech/tags/performance.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [profile](<https://devfeed.tech/tags/profile.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [svg](<https://devfeed.tech/tags/svg.md>)

### AI overview

The article demonstrates full-stack GPU flame graphs and GPU FlameScope using GZDoom, including Intel Battlemage GPU support. It shows how synchronized CPU and GPU profiling can correlate workload periods and identify GPU shader compilation and NIR preprocessing as sources of CPU activity.

### Source excerpt

AI Flame Graphs are now open source and include Intel Battlemage GPU support, which means it can also generate full-stack GPU flame graphs for providing new insights into gaming performance, especially when coupled with FlameScope (an older open source project of mine). Here's an example of GZDoom, and I'll start with flame scopes for both CPU and GPU utilization, with details annotated: (Here are the raw CPU and GPU versions.) FlameScope shows a subsecond-offset heatmap of profile samples, where each column is one second (in this example, made up of 50 x 20ms blocks) and the color depth represents the number of samples, revealing variance and perturbation that you can select to generate a flame graph just for that time range. Update: the row size can be ajusted (it is limited by the sample rate captured in the profile), e.g., you could generate 60 rows to match 60fps games. Putting these CPU and GPU flame scopes side by side has enabled your eyes to do pattern matching to solve what would otherwise be a time-consuming task of performance correlation. The gaps in the GPU flame scope on the right - where the GPU was not doing much work - match the heavier periods of CPU work on the left. CPU Analysis FlameScope lets us click on the interesting periods. By selecting one of the CPU shader compilation stripes we get the flame graph just for that range: This is brilliant, and we can see exactly why the CPUs were busy for about 180 ms (the vertical length of the red stripe): it's doing compilation of GPU shaders and some NIR preprocessing (optimizations to the NIR intermediate representation that Mesa uses internally). If you are new to flame graphs, you look for the widest towers and optimize them first. Here is the interactive SVG. CPU flame graphs and CPU flame scope aren't new (from 2011 and 2018, both open source). What is new is full-stack GPU flame graphs and GPU flame scope. GPU Analysis Interesting details can also be selected in the GPU FlameScope for generating

## Adventures in Compose - The Doom fire effect

DevFeed: [Adventures in Compose - The Doom fire effect](<https://devfeed.tech/articles/adventures-in-compose-the-doom-fire-effect-25658.md>)

Original publisher: [Read original article](<https://adambennett.dev/2020/04/adventures-in-compose-the-doom-fire-effect/>)

Published: 2020-04-09T18:07:48Z

Content type: tutorial

Language: en

Sources: [Posts on Adam Bennett](<https://devfeed.tech/sources/posts-on-adam-bennett.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Development](<https://devfeed.tech/topics/development.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [blog](<https://devfeed.tech/tags/blog.md>), [career](<https://devfeed.tech/tags/career.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [doom](<https://devfeed.tech/tags/doom.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [examples](<https://devfeed.tech/tags/examples.md>), [finance](<https://devfeed.tech/tags/finance.md>), [functional](<https://devfeed.tech/tags/functional.md>), [games](<https://devfeed.tech/tags/games.md>), [growth](<https://devfeed.tech/tags/growth.md>), [java](<https://devfeed.tech/tags/java.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [money](<https://devfeed.tech/tags/money.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [startups](<https://devfeed.tech/tags/startups.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [training](<https://devfeed.tech/tags/training.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A tutorial exploring how to recreate the Doom fire effect with Jetpack Compose. It discusses drawing on the screen, updating state in a loop, recomposition, and the limitations encountered with stochastic rendering and memoization.

### Source excerpt

Featured in Fragmented and jetc.dev. One of the best books I've bought in the last few years is the Game Engine Black Book: Doom by Fabien Sanglard. As someone who grew up on games but has never really thought about how they're made, it's been a fascinating book to dip in and out of, and there's some great bits of innovation detailed inside. There's an axiom about the greatest innovations spawning from constraints, and the original DOOM team had some pretty serious constraints around memory and processing power - things that we generally take for granted these days. Reading about how they solved problems in this environment is fascinating, and I highly recommend the book.

## When to declare classes final

DevFeed: [When to declare classes final](<https://devfeed.tech/articles/when-to-declare-classes-final-21149.md>)

Original publisher: [Read original article](<https://ocramius.github.io/blog/when-to-declare-classes-final/>)

Published: 2015-01-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Marco Pivetta](<https://devfeed.tech/sources/marco-pivetta.md>)

Topics: [PHP](<https://devfeed.tech/topics/php.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [articles](<https://devfeed.tech/tags/articles.md>), [doom](<https://devfeed.tech/tags/doom.md>), [examples](<https://devfeed.tech/tags/examples.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [oop](<https://devfeed.tech/tags/oop.md>), [opinion](<https://devfeed.tech/tags/opinion.md>), [php](<https://devfeed.tech/tags/php.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This opinion article argues that PHP classes should generally be declared final, especially when they implement an interface and expose no other public methods. It explains that preventing inheritance can discourage deep inheritance chains, encourage composition, and make developers design clearer public APIs.

### Source excerpt

TL;DR: Make your classes always final, if they implement an interface, and no other public methods are defined In the last month, I had a few discussions about the usage of the final marker on PHP classes. The pattern is recurrent: I ask for a newly introduced class to be declared as final the author of the code is reluctant to this proposal, stating that final limits flexibility I have to explain that flexibility comes from good abstractions, and not from inheritance It is therefore clear that coders need a better explanation of when to use final, and when to avoid it. There are many other articles about the subject, but this is mainly thought as a "quick reference" for those that will ask me the same questions in future. When to use "final": final should be used whenever possible. Why do I have to use final? There are numerous reasons to mark a class as final: I will list and describe those that are most relevant in my opinion. 1. Preventing massive inheritance chain of doom Developers have the bad habit of fixing problems by providing specific subclasses of an existing (not adequate) solution. You probably saw it yourself with examples like following: <?php class Db { /* ... */ } class Core extends Db { /* ... */ } class User extends Core { /* ... */ } class Admin extends User { /* ... */ } class Bot extends Admin { /* ... */ } class BotThatDoesSpecialThings extends Bot { /* ... */ } class PatchedBot extends BotThatDoesSpecialThings { /* ... */ } This is, without any doubts, how you should NOT design your code. The approach described above is usually adopted by developers who confuse OOP with "a way of solving problems via inheritance" ("inheritance-oriented-programming", maybe?). 2. Encouraging composition In general, preventing inheritance in a forceful way (by default) has the nice advantage of making developers think more about composition. There will be less stuffing functionality in existing code via inheritance, which, in my opinion, is a symptom of haste