<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>John's blog</provider_name><provider_url>https://blog.jj5.net/blog</provider_url><author_name>Jay Jay</author_name><author_url>https://blog.jj5.net/blog/author/jj5/</author_url><title>Programming principles from id software &#x2014; John's blog</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="VsukWcMlRS"&gt;&lt;a href="https://blog.jj5.net/blog/2021/02/07/programming-principles-from-id-software/"&gt;Programming principles from id software&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://blog.jj5.net/blog/2021/02/07/programming-principles-from-id-software/embed/#?secret=VsukWcMlRS" width="600" height="338" title="&#x201C;Programming principles from id software&#x201D; &#x2014; John's blog" data-secret="VsukWcMlRS" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script type="text/javascript"&gt;
/* &lt;![CDATA[ */
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://d3tdk46fcdgbgu.cloudfront.net/blog/wp-includes/js/wp-embed.min.js
/* ]]&gt; */
&lt;/script&gt;
</html><description>These are great: John Romero on Programming principles from id software Just do it (and do it well) Keep your code always runnable Keep it simple Invest time in building great tools Test your code thoroughly Fix bugs as soon &hellip; Continue reading &rarr;</description></oembed>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Object Caching 16/29 objects using Disk
Page Caching using Disk: Enhanced (Requested URI contains query) 
Content Delivery Network via Amazon Web Services: CloudFront: d3tdk46fcdgbgu.cloudfront.net
Database Caching using Disk

Served from: blog.jj5.net @ 2026-04-17 03:27:33 by W3 Total Cache
-->