Reinventing how .NET builds and ships (again)
devblogs.microsoft.com
What They Don't Tell You About Maintaining an Open Source Project
andrej.sh
A new bridge links the math of infinity to computer science
quantamagazine.org
Unifying our mobile and desktop domains
techblog.wikimedia.org
Show HN: We built an open source, zero webhooks payment processor
github.com
The fall of Labubus and the mush of modern internet trends
michigandaily.com
A DOOM vector engine for rendering in KiCad, and over an audio jack
mikeayles.com
Google Antigravity exfiltrates data via indirect prompt injection attack
promptarmor.com
LLVM Adds Constant-Time Support for Protecting Cryptographic Code
blog.trailofbits.com
How to repurpose your old phone into a web server
far.computer
FLUX.2: Frontier Visual Intelligence
bfl.ai
The Generative Burrito Test
generativist.com
Trillions spent and big software projects are still failing
spectrum.ieee.org
Ilya Sutskever: We're moving from the age of scaling to the age of research
dwarkesh.com
Jakarta is now the biggest city in the world
axios.com
Launch HN: Onyx (YC W24) – Open-source chat UI
Constant-time support coming to LLVM: Protecting cryptographic code
blog.trailofbits.com
Notes on the Troubleshooting and Repair of Computer and Video Monitors
repairfaq.org
1,700-year-old Roman sarcophagus is unearthed in Budapest
apnews.com
Someone at YouTube Needs Glasses: The Prophecy Has Been Fulfilled
jayd.ml
Python is not a great language for data science
blog.genesmindsmachines.com
3 things to know about Ironwood, our latest TPU
blog.google
What Now? Handling Errors in Large Systems
brooker.co.za
The 101 of analog signal filtering (2024)
lcamtuf.substack.com
I got DOOM running in KiCad by rendering it with PCB traces and footprints instead of pixels.
Walls are rendered as PCB_TRACK traces, and entities (enemies, items, player) are actual component footprints - SOT-23 for small items, SOIC-8 for decorations, QFP-64 for enemies and the player.
How I did it: Started by patching DOOM's source code to extract vector data directly from the engine. Instead of trying to render 64,000 pixels (which would be impossibly slow), I grab the geometry DOOM already calculates internally - the drawsegs[] array for walls and vissprites[] for entities.
Added a field to the vissprite_t structure to capture entity types (MT_SHOTGUY, MT_PLAYER, etc.) during R_ProjectSprite(). This lets me map 150+ entity types to appropriate footprint categories.
The DOOM engine sends this vector data over a Unix socket to a Python plugin running in KiCad. The plugin pre-allocates pools of traces and footprints at startup, then just updates their positions each frame instead of creating/destroying objects. Calls pcbnew.Refresh() to update the display.
Runs at 10-25 FPS depending on hardware. The bottleneck is KiCad's refresh, not DOOM or the data transfer.
Also renders to an SDL window (for actual gameplay) and a Python wireframe window (for debugging), so you get three views running simultaneously.
Follow-up: ScopeDoom
After getting the wireframe renderer working, I wanted to push it somewhere more physical. Oscilloscopes in X-Y mode are vector displays - feed X coordinates to one channel, Y to the other. I didn't have a function generator, so I used my MacBook's headphone jack instead.
The sound card is just a dual-channel DAC at 44.1kHz. Wired 3.5mm jack → 1kΩ resistors → scope CH1 (X) and CH2 (Y). Reused the same vector extraction from KiDoom, but the Python script converts coordinates to ±1V range and streams them as audio samples.
Each wall becomes a wireframe box, the scope traces along each line. With ~7,000 points per frame at 44.1kHz, refresh rate is about 6 Hz - slow enough to be a slideshow, but level geometry is clearly recognizable. A 96kHz audio interface or analog scope would improve it significantly (digital scopes do sample-and-hold instead of continuous beam tracing).
Links: KiDoom GitHub: https://github.com/MichaelAyles/KiDoom ScopeDoom GitHub: https://github.com/MichaelAyles/ScopeDoom KiDOOM Write-up: https://www.mikeayles.com/#kidoom ScopeDOOM Write-up: Https://www.mikeayles.com/#scopedoom