Files
nexus/sreweekly/articles/120/06-programming-sucks.html
2026-09-12 17:23:01 +08:00

2520 lines
90 KiB
HTML

<!DOCTYPE html>
<html xmlns="//www.w3.org/1999/xhtml">
<head>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-2314005-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-5NSSTF3HVX');
</script>
<!--
<script type="text/javascript">
var _gaq = _gaq || [];
var pluginUrl = '//www.google-analytics.com/plugins/ga/inpage_linkid.js';
_gaq.push(['_require', 'inpage_linkid', pluginUrl]);
_gaq.push(['_setAccount', 'UA-2314005-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
-->
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:creator" content="@peterhuntwelch" />
<meta name="twitter:site" content="@peterhuntwelch" />
<meta
property="og:image"
content="https://www.stilldrinking.org/blog_images/programming-sucks.jpg"
/>
<meta property="og:url" content="https://www.stilldrinking.org/programming-sucks" />
<meta property="og:title" content="Programming Sucks" />
<meta property="og:type" content="website" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="microtip" content="14qxTpffMT89yF8UUSBDdB16iDRMnWPEJz" data-recipient="Peter Welch" />
<link rel="shortcut icon" href="favicon.ico" />
<!--
Several years ago, somebody posted
one of these to reddit and somebody
else commented "I like this but holy
shit those lowercase t's are
annoying." At the time I shrugged
it off as you can't please everyone
and christ people will complain
about anything. The font at the
time was Adobe Garamond Pro, which
I use for my books and looks quite
nice in print and on Macs. I had
apparently never bothered to look
at my own blog on a PC because
when I did the other day my first
thought was holy shit those
lowercase t's are annoying. So I
have changed the font to a more
standard font for the benefit of
anyone on a Bill box, and sorry to
have judged you harshly, random
guy on reddit.
-->
<link href="css/screen.css?cb=40" rel="stylesheet" type="text/css" media="all" />
<link href="css/print.css" rel="stylesheet" type="text/css" media="print" />
<link href="css/mobile.css?cb=14" rel="stylesheet" type="text/css" />
<title>Programming Sucks</title>
<!--
So this guy we just interviewed at my
current job wrote this little script
to see if a product update for some
company had come out. Every 10 seconds
the script urllib'ed the page, checked
the length of the html - literally
len(html) - against the length it was
last time it checked. He wrote a blog
post about this script. A freaking
blog post. He also described himself
as "something of a child prodigy"
despite, in another post, saying he
couldn't calculate the area of a slice
of pizza because "area of a triangle
with a curved edge is beyond my
Google-less math skills." Seriously
dude? I haven't taken geometry in 20
years, and pi*r^2/8 seems pretty
freaking obvious.
The script also called a ruby script
to send him a tweet which another
script was probably monitoring to text
his phone so he could screenshot the
text and post to facebook via
instagram.
I think the "millenials" get
undeserved flak, as all generations do,
for being younger and prettier and
living in a different world.
But this kid calling himself a prodigy
is a clear indication of way too many
gold stars handed out for adequacy, so
to ensure that no such abominable
script ever does anything besides
bomb somebody's twitter account, this
comment shows up exactly 50% of the
time, and I encourage others to do
the same.
-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
/*
Yeah, there's some shitty code here.
There are some things that shouldn't
be done. I did them. Sometimes, I had
my reasons. Sometimes, I was just being
lazy. But guess what? You're sitting
there reading the source on some guy's
blog. So fuck you.
*/
$(function() {
if( !$('#cont a.footnote').length ) {
$('body').addClass('no-footnotes');
}
$('#toggle-menu, #menu li.exit').on('click', function(){
$('#menu').toggle();
});
$('#close-note').on('click', function(){
$('#mobile-footnote').hide();
});
$('.mobile-footnote').on('click', function(e){
var target = $(this).attr('targ');
var content = $('#' + target).html();
$('#mobile-footnote .content').html(content);
$('#mobile-footnote').show();
return false;
});
});
window.onload = function() {
var last = 0;
$('#cont a.footnote').each(function() {
id = this.id.match(/[0-9]+/)[0];
topset = $(this).parent().position().top;
if(topset <= last) {
topset = last;
}
note = $('#fp' + id);
note.css('top',topset);
last = topset + note.height() + 6;
});
$('#footnotes').hide();
$('#footnotes').css('visibility','visible');
$('#footnotes').fadeIn('slow');
$('#cont a.footnote').each(function() {
topset = $(this).parent().position().top;
});
var current = document.location.toString();
var getit = current.match(/\/([a-z0-9\-]*)$/);
var link = false;
if(getit) {
var link = $("#main_menu").children('#_' + getit[1]);
var next = link.prev().find('a').clone();
var prev = link.next().find('a').clone();
next.html("Future &raquo;");
prev.html("&laquo; Past");
next.css({"float":"right","padding":"10px 0","text-decoration":"none"});
prev.css({"float":"left","padding":"10px 0","text-decoration":"none"});
next.appendTo('#cont');
prev.appendTo('#cont');
} else {
var prev = $("#main_menu").children().eq(1).children().first().clone();
prev.css({"float":"left","padding":"10px 0","text-decoration":"none"});
prev.html("&laquo; Past");
prev.appendTo('#cont');
}
};
</script>
<!--
<script type='text/javascript' src='//dsms0mj1bbhn4.cloudfront.net/assets/pub/shareaholic.js' data-shr-siteid='420e1f944df74105808ecdc1cec8c08e' data-cfasync='false' async='async'></script>
<script data-ad-client="ca-pub-6415224682234295" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
-->
<script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic.com/mcjs-connected/js/users/daa4b5ee7e6be7512749439ae/3d9aba09fd5fba7665195e9d4.js");</script>
<style>
#promo {
width: 930px;
margin: 0 auto 20px;
}
#promo a {
width: 100%
display: block;
overflow: hidden;
line-height: 0;
font-size: 0;
}
#promo a {
text-decoration: none;
}
#promo a img {
width: 100%;
}
#promo a img.hover {
position: absolute;
top: -9000px;
left: 0;
}
#promo a .m {
display: none;
}
#promo a:hover img.off {
display: none;
}
#promo a:hover img.hover {
position: static;
}
/*
#top {
border-top: 1px solid #ccc;
}
*/
@media only screen and (max-width: 930px) {
#promo {
width: auto;
}
}
@media only screen and (max-width: 600px) {
#promo a .b {
display: none;
}
#promo a .m {
display: block;
}
}
/* Bookcase */
bracket {
display: block;
position: relative;
width: 60px;
height: 30px;
}
limit {
display: block;
position: relative;
overflow: hidden;
width: inherit;
height: inherit;
}
bulb {
position: absolute;
display: block;
border-radius: 100%;
width: 10%;
height: 20%;
border: 3px double #ccc;
}
bracket bulb:first-of-type {
left: 0;
bottom: -20%;
}
bracket bulb:last-of-type {
top: 0;
right: -10%;
}
curve {
display: block;
background: transparent;
border: 1px solid #ccc;
width: 200%;
height: 200%;
border-radius: 200%;
position: absolute;
top: 0;
left: 0;
}
shelf {
height: 50px;
display: block;
position: relative;
border-top: 1px solid #ddd;
margin-top: 2px;
}
shelf bracket {
top: -1px;
}
shelf bracket:first-of-type {
position: absolute;
left: 0;
transform: scale(-1, 1);
}
shelf bracket:last-of-type {
position: absolute;
right: 0;
}
bookshelf {
width: auto;
margin: 0 auto 20px;
display: block;
text-align: center;
clear: both;
border-top: 1px solid #ccc;
padding-top: 30px;
}
books {
display: block;
margin-bottom: 0px;
}
a.book {
position: relative;
display: block;
box-shadow: 0px 1px 3px 1px rgba(100,100,100,0.3);
cursor: pointer;
margin-bottom: 15px;
color: black;
text-decoration: none;
}
a.book img {
display: block;
width: 100%;
}
teaser {
display: none;
position: absolute;
font-size: 16px;
line-height: 1.6;
bottom: 0;
padding: 15px;
box-shadow: 0px 1px 2px 0px rgba(100,100,100,0.3);
background: #fff;
z-index: 1001;
width: 910px;
text-align: left;
}
@media only screen and (max-width: 940px), screen and (max-device-width: 500px) {
teaser {
display: block;
position: relative;
width: auto;
}
p.pip {
float: none;
margin-left: auto;
}
}
a.book:hover teaser {
display: block;
}
common {
font-size: 14px;
color: #999;
padding: 10px;
}
teaser h3 {
margin-bottom: 10px;
}
teaser span {
color: #33f;
display: block;
margin-top: 10px;
}
</style>
</head>
<body>
<div id="bod">
<!--
<div id="promo">
<a href="http://geni.us/noware">
<span class="m">
<img class="off" src="/img/noware-ad-mobile.jpg" alt="Click to buy Noware">
<img class="hover" src="/img/noware-ad-mobile-hover.jpg" alt="Click to buy Noware">
</span>
<span class="b">
<img class="off" src="/img/noware-ad.jpg" alt="Click to buy Noware">
<img class="hover" src="/img/noware-ad-hover.jpg" alt="Click to buy Noware">
</span>
</a>
</div>
-->
<div id="top">
<a id="homelink" href="/"></a>
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CE7DP2JE&placement=wwwstilldrinkingorg" id="_carbonads_js"></script>
</div>
<!--
<bookshelf>
<books>
<book onClick='ga("send", "event", "Books", "click", "Fish, top"); document.location="http://geni.us/2WuF"'>
<img src="../img/bookshelf/atitiwaf.jpg" />
<teaser>
<h3>And Then I Thought I was a Fish</h3>
<p>IDENTIFYING INFORMATION: Peter Hunt Welch is a 20-year-old single Caucasian male who was residing in Bar Harbor, Maine this summer. He is a University of Maine at Orono student with no prior psychiatric history, who was admitted to the Acadia Hospital on an involuntary basis due to an acute level of confusion and disorganization, both behaviorally and cognitively. He was evaluated at MDI and was transferred from that facility due to psychosis, impulse thoughts, delusions, and disorientation.</p>
<span>Click to see on Amazon</span>
</teaser>
</book>
<book onClick='ga("send", "event", "Books", "click", "Observations, top"); document.location="http://geni.us/WaG"'>
<img src="../img/bookshelf/ooaswm.jpg" />
<teaser>
<h3>Observations of a Straight White Male with No Interesting Fetishes</h3>
<p>Ever wondered how to justify your own righteousness even while you're constantly embarrassed by it? Or how to make a case for your own existence when you contribute nothing besides nominal labor to a faceless corporation that's probably exploiting children? Are you clinging desperately to an arbitrary social model imposed by your parents and childhood friends? Or screaming in terror, your mind unhinged at the prospect of an uncaring void racing to consume the very possibility of your life having meaning?</p>
<span>Click to see on Amazon</span>
</teaser>
</book>
<book onClick='ga("send", "event", "Books", "click", "Noware, top"); document.location="http://geni.us/noware"'>
<img src="../img/bookshelf/noware.jpg" />
<teaser>
<h3>Noware</h3>
<p>This is the story of a boy, a girl, a phone, a cat, the end of the universe, and the terrible power of ennui.</p>
<span>Click to see on Amazon</span>
</teaser>
</book>
<common>&#11013; Books for monies</common>
</books>
<shelf>
<bracket>
<limit><curve></curve></limit><bulb></bulb><bulb></bulb>
</bracket>
<bracket>
<limit><curve></curve></limit><bulb></bulb><bulb></bulb>
</bracket>
</shelf>
</bookshelf>
-->
<ul id="menu">
<li class="exit"><a href="javascript:void(0)">&times;</a></li>
<li><a href="https://blacklivesmatter.com/resources/" style="background:black;color:white">Black Lives Matter</a></li>
<li><a href="https://www.joincampaignzero.org/" style="background:black;color:white">Campaign Zero</a></li>
<!--
<li>
<a href="minis.php">Reviews</a>
</li>
<li class="book-button">
<a
style="color:#A34054;"
href="http://www.amazon.com/dp/B008DZEWF8"
title="Please please buy stuff"
><img src="/img/icons/books.png" style="height: 18px; width: 18px; position: relative; top: 4px;" alt=""> Books</a>
<ul class="book-menu">
<li class="section">Noware</li>
<li>
<a href="http://geni.us/noware">Kindle (Amazon)</a>
<a href="http://geni.us/Aq07uI">Softcover (Amazon)</a>,
<a href="http://www.lulu.com/shop/peter-welch/noware/ebook/product-24433099.html">ePub (Lulu)</a>
</li>
<li class="section">Observations of a Straight White Male with No Interesting Fetishes</li>
<li>
<a href="http://geni.us/WaG">Kindle (Amazon)</a>,
<a href="http://geni.us/2PyS">Softcover (Amazon)</a>,
<a href="http://www.lulu.com/shop/peter-welch/observations-of-a-straight-white-male-with-no-interesting-fetishes/ebook/product-21760402.html">ePub (Lulu)</a>
</li>
<li class="section">And Then I Thought I was a Fish</li>
<li>
<a href="http://geni.us/2WuF">Kindle (Amazon)</a>,
<a href="http://geni.us/3ynW">Softcover (Amazon)</a>
</li>
</ul>
</li>
-->
<li>
<a href="essays.php" title="Essays">Essays</a>
</li>
<!--
<li>
<a href="disclaimer.php" title="Disclaimer">Disclaimer</a>
</li>
-->
<li>
<a href="contact.php" title="Contact">Contact</a>
</li>
<li>
<a href="http://www.noreallyidocare.com" title="Complaints">Complaints</a>
</li>
<li>
<a href="rss/feed.xml" title="RSS">RSS</a>
</li>
<!--
<li>
<a href="https://www.scribblemint.com" title="Or something">Or Something</a>
</li>
-->
<li>
<a href="https://www.facebook.com/peterhuntwelch" style="color: #4267b2;"><img src="/img/icons/f_logo.png" style="height: 18px; width: 18px; position: relative; top: 3px;" alt=""> Facebook</a>
</li>
<li>
<a href="https://twitter.com/peterhuntwelch" style="color: #1da1f2;"><img src="/img/icons/t_logo.png" style="height: 18px; width: 18px; position: relative; top: 3px;" alt=""> Twitter</a>
</li>
</ul>
<div id="wrap">
<div id="head" class="">
<p id="toggle-menu" class="mobile">&#9776;</p>
<ul id="essay-menu" style="display:none">
<ul id='main_menu'><li id='_scrupulosity-v-flatware'><span class='list-wrap'><a href='/scrupulosity-v-flatware'>Scrupulosity v. Flatware
</a>
<span class='list-date'>May 14th, 2026
</span>
</span>
</li>
<li id='_drunk-interrupted'><span class='list-wrap'><a href='/drunk-interrupted'>Drunk, Interrupted
</a>
<span class='list-date'>April 10th, 2026
</span>
</span>
</li>
<li id='_pascal-s-ante'><span class='list-wrap'><a href='/pascal-s-ante'>Pascal's Ante
</a>
<span class='list-date'>March 23rd, 2026
</span>
</span>
</li>
<li id='_emergence-is-nonsense'><span class='list-wrap'><a href='/emergence-is-nonsense'>Emergence Is Nonsense
</a>
<span class='list-date'>March 18th, 2026
</span>
</span>
</li>
<li id='_ice-agents-are-running-out-of-options'><span class='list-wrap'><a href='/ice-agents-are-running-out-of-options'>ICE Agents Are Running Out of Options
</a>
<span class='list-date'>February 8th, 2026
</span>
</span>
</li>
<li id='_stop-talking-to-technology-executives-like-they-have-anything-to-say'><span class='list-wrap'><a href='/stop-talking-to-technology-executives-like-they-have-anything-to-say'>Stop Talking to Technology Executives Like They Have Anything to Say
</a>
<span class='list-date'>August 19th, 2025
</span>
</span>
</li>
<li id='_w-e-l-p'><span class='list-wrap'><a href='/w-e-l-p'>W.E.L.P.
</a>
<span class='list-date'>November 22nd, 2024
</span>
</span>
</li>
<li id='_navigating-the-anxiety-vortex'><span class='list-wrap'><a href='/navigating-the-anxiety-vortex'>Navigating the Anxiety Vortex
</a>
<span class='list-date'>August 31st, 2024
</span>
</span>
</li>
<li id='_in-praise-of-excruciation'><span class='list-wrap'><a href='/in-praise-of-excruciation'>In Praise of Excruciation
</a>
<span class='list-date'>July 22nd, 2023
</span>
</span>
</li>
<li id='_tech-erosion'><span class='list-wrap'><a href='/tech-erosion'>Tech Erosion
</a>
<span class='list-date'>June 23rd, 2023
</span>
</span>
</li>
<li id='_eldritch-gymnastics'><span class='list-wrap'><a href='/eldritch-gymnastics'>Eldritch Gymnastics
</a>
<span class='list-date'>April 6th, 2023
</span>
</span>
</li>
<li id='_ai-is-not-the-problem'><span class='list-wrap'><a href='/ai-is-not-the-problem'>AI Is Not the Problem
</a>
<span class='list-date'>February 6th, 2023
</span>
</span>
</li>
<li id='_to-the-tiny-spider-that-came-with-us-from-brooklyn'><span class='list-wrap'><a href='/to-the-tiny-spider-that-came-with-us-from-brooklyn'>To the Tiny Spider That Came With Us From Brooklyn
</a>
<span class='list-date'>August 26th, 2022
</span>
</span>
</li>
<li id='_pennsylvania-so-far'><span class='list-wrap'><a href='/pennsylvania-so-far'>Pennsylvania, So Far
</a>
<span class='list-date'>May 12th, 2022
</span>
</span>
</li>
<li id='_dysmantle-is-a-revelation-and-the-one-armed-king-is-my-god'><span class='list-wrap'><a href='/dysmantle-is-a-revelation-and-the-one-armed-king-is-my-god'>Dysmantle is a Revelation and the One-Armed King is my God
</a>
<span class='list-date'>March 14th, 2022
</span>
</span>
</li>
<li id='_the-tom-cruise-effect'><span class='list-wrap'><a href='/the-tom-cruise-effect'>The Tom Cruise Effect
</a>
<span class='list-date'>May 26th, 2021
</span>
</span>
</li>
<li id='_immuniday'><span class='list-wrap'><a href='/immuniday'>Immuniday
</a>
<span class='list-date'>May 14th, 2021
</span>
</span>
</li>
<li id='_the-steak-knife-incident'><span class='list-wrap'><a href='/the-steak-knife-incident'>The Steak Knife Incident
</a>
<span class='list-date'>April 9th, 2021
</span>
</span>
</li>
<li id='_a-better-place'><span class='list-wrap'><a href='/a-better-place'>A Better Place
</a>
<span class='list-date'>November 8th, 2020
</span>
</span>
</li>
<li id='_in-his-own-words'><span class='list-wrap'><a href='/in-his-own-words'>In His Own Words
</a>
<span class='list-date'>October 9th, 2020
</span>
</span>
</li>
<li id='_the-life-and-times-of-cerebus-hobbes-welch'><span class='list-wrap'><a href='/the-life-and-times-of-cerebus-hobbes-welch'>The Life and Times of Cerebus Hobbes Welch
</a>
<span class='list-date'>July 31st, 2020
</span>
</span>
</li>
<li id='_a-very-american-suicide'><span class='list-wrap'><a href='/a-very-american-suicide'>A Very American Suicide
</a>
<span class='list-date'>July 12th, 2020
</span>
</span>
</li>
<li id='_the-entropy-of-isolation-why-time-got-so-wibbly-this-year'><span class='list-wrap'><a href='/the-entropy-of-isolation-why-time-got-so-wibbly-this-year'>The Entropy of Isolation: Why Time Got So Wibbly This Year
</a>
<span class='list-date'>July 3rd, 2020
</span>
</span>
</li>
<li id='_the-market-value-of-life'><span class='list-wrap'><a href='/the-market-value-of-life'>The Market Value of Life
</a>
<span class='list-date'>June 6th, 2020
</span>
</span>
</li>
<li id='_the-problem-with-bill-gates'><span class='list-wrap'><a href='/the-problem-with-bill-gates'>The Problem With Bill Gates
</a>
<span class='list-date'>June 5th, 2020
</span>
</span>
</li>
<li id='_dear-new-york-the-people-are-willing-to-negotiate'><span class='list-wrap'><a href='/dear-new-york-the-people-are-willing-to-negotiate'>Dear New York: The People Are Willing to Negotiate
</a>
<span class='list-date'>June 2nd, 2020
</span>
</span>
</li>
<li id='_kill-the-weak'><span class='list-wrap'><a href='/kill-the-weak'>Kill the Weak
</a>
<span class='list-date'>May 5th, 2020
</span>
</span>
</li>
<li id='_eat-the-world'><span class='list-wrap'><a href='/eat-the-world'>Eat the World
</a>
<span class='list-date'>May 2nd, 2020
</span>
</span>
</li>
<li id='_notes-from-ground-two-april-6th'><span class='list-wrap'><a href='/notes-from-ground-two-april-6th'>Notes from Ground Two, April 6th
</a>
<span class='list-date'>April 6th, 2020
</span>
</span>
</li>
<li id='_notes-from-ground-two-march-31st'><span class='list-wrap'><a href='/notes-from-ground-two-march-31st'>Notes from Ground Two, March 31st
</a>
<span class='list-date'>March 31st, 2020
</span>
</span>
</li>
<li id='_notes-from-ground-two-march-28th'><span class='list-wrap'><a href='/notes-from-ground-two-march-28th'>Notes from Ground Two, March 28th
</a>
<span class='list-date'>March 28th, 2020
</span>
</span>
</li>
<li id='_i-m-scared'><span class='list-wrap'><a href='/i-m-scared'>I'm Scared
</a>
<span class='list-date'>March 24th, 2020
</span>
</span>
</li>
<li id='_to-all-the-friends-whose-work-i-will-never-read'><span class='list-wrap'><a href='/to-all-the-friends-whose-work-i-will-never-read'>To All the Friends Whose Work I Will Never Read
</a>
<span class='list-date'>February 17th, 2020
</span>
</span>
</li>
<li id='_the-most-recent-time-i-sniped-myself'><span class='list-wrap'><a href='/the-most-recent-time-i-sniped-myself'>The Most Recent Time I Sniped Myself
</a>
<span class='list-date'>January 17th, 2020
</span>
</span>
</li>
<li id='_a-spoiler-filled-review-of-finishing-the-wheel-of-time-at-39'><span class='list-wrap'><a href='/a-spoiler-filled-review-of-finishing-the-wheel-of-time-at-39'>A Spoiler-Filled Review of Finishing The Wheel of Time at 39
</a>
<span class='list-date'>December 29th, 2019
</span>
</span>
</li>
<li id='_winning-the-internet'><span class='list-wrap'><a href='/winning-the-internet'>Winning the Internet
</a>
<span class='list-date'>November 13th, 2019
</span>
</span>
</li>
<li id='_coffee-is-hard'><span class='list-wrap'><a href='/coffee-is-hard'>Coffee is Hard
</a>
<span class='list-date'>October 16th, 2019
</span>
</span>
</li>
<li id='_take-better-screenshots'><span class='list-wrap'><a href='/take-better-screenshots'>Take Better Screenshots
</a>
<span class='list-date'>September 6th, 2019
</span>
</span>
</li>
<li id='_that-feeling-when-you-discover-someone-you-know-is-a-monster'><span class='list-wrap'><a href='/that-feeling-when-you-discover-someone-you-know-is-a-monster'>That Feeling When You Discover Someone You Know Is a Monster
</a>
<span class='list-date'>February 15th, 2019
</span>
</span>
</li>
<li id='_a-brief-review-of-reading-the-wheel-of-time-at-38'><span class='list-wrap'><a href='/a-brief-review-of-reading-the-wheel-of-time-at-38'>A Brief Review of Reading The Wheel of Time at 38
</a>
<span class='list-date'>January 29th, 2019
</span>
</span>
</li>
<li id='_it-takes-a-monk'><span class='list-wrap'><a href='/it-takes-a-monk'>It Takes a Monk
</a>
<span class='list-date'>July 6th, 2018
</span>
</span>
</li>
<li id='_what-it-s-like-to-be-a-fake-extrovert-part-4'><span class='list-wrap'><a href='/what-it-s-like-to-be-a-fake-extrovert-part-4'>What It's Like to Be a Fake Extrovert, Part 4
</a>
<span class='list-date'>July 6th, 2018
</span>
</span>
</li>
<li id='_what-it-s-like-to-be-a-fake-extrovert-part-3'><span class='list-wrap'><a href='/what-it-s-like-to-be-a-fake-extrovert-part-3'>What It's Like to Be a Fake Extrovert, Part 3
</a>
<span class='list-date'>June 12th, 2018
</span>
</span>
</li>
<li id='_what-it-s-like-to-be-a-fake-extrovert-part-2'><span class='list-wrap'><a href='/what-it-s-like-to-be-a-fake-extrovert-part-2'>What It's Like to Be a Fake Extrovert, Part 2
</a>
<span class='list-date'>June 4th, 2018
</span>
</span>
</li>
<li id='_what-it-s-like-to-be-a-fake-extrovert-part-1'><span class='list-wrap'><a href='/what-it-s-like-to-be-a-fake-extrovert-part-1'>What It's Like to Be a Fake Extrovert, Part 1
</a>
<span class='list-date'>May 29th, 2018
</span>
</span>
</li>
<li id='_this-is-not-about-tinder'><span class='list-wrap'><a href='/this-is-not-about-tinder'>This Is Not About Tinder
</a>
<span class='list-date'>December 15th, 2017
</span>
</span>
</li>
<li id='_assholes-in-paradise'><span class='list-wrap'><a href='/assholes-in-paradise'>Assholes in Paradise
</a>
<span class='list-date'>October 14th, 2017
</span>
</span>
</li>
<li id='_startup-culture-has-jumped-the-shark'><span class='list-wrap'><a href='/startup-culture-has-jumped-the-shark'>Startup Culture Has Jumped the Shark
</a>
<span class='list-date'>September 29th, 2017
</span>
</span>
</li>
<li id='_sick-of-your-shit-apple'><span class='list-wrap'><a href='/sick-of-your-shit-apple'>Sick of Your Shit, Apple
</a>
<span class='list-date'>August 13th, 2017
</span>
</span>
</li>
<li id='_how-to-write-a-novel'><span class='list-wrap'><a href='/how-to-write-a-novel'>How to Write a Novel
</a>
<span class='list-date'>June 2nd, 2017
</span>
</span>
</li>
<li id='_cat-drinking-water'><span class='list-wrap'><a href='/cat-drinking-water'>Cat Drinking Water
</a>
<span class='list-date'>May 17th, 2017
</span>
</span>
</li>
<li id='_an-unscientific-analysis-of-jet-lag'><span class='list-wrap'><a href='/an-unscientific-analysis-of-jet-lag'>An Unscientific Analysis of Jet Lag
</a>
<span class='list-date'>April 14th, 2017
</span>
</span>
</li>
<li id='_what-to-do-in-case-of-nukular-sharknado'><span class='list-wrap'><a href='/what-to-do-in-case-of-nukular-sharknado'>What to Do in Case of Nukular Sharknado
</a>
<span class='list-date'>March 8th, 2017
</span>
</span>
</li>
<li id='_stop-telling-me-to-feel-worse'><span class='list-wrap'><a href='/stop-telling-me-to-feel-worse'>Stop Telling Me to Feel Worse
</a>
<span class='list-date'>December 28th, 2016
</span>
</span>
</li>
<li id='_protect-patrick-stewart-and-ian-mckellen-from-2016'><span class='list-wrap'><a href='/protect-patrick-stewart-and-ian-mckellen-from-2016'>Protect Patrick Stewart and Ian McKellen from 2016
</a>
<span class='list-date'>December 11th, 2016
</span>
</span>
</li>
<li id='_things-i-send-to-recruiters'><span class='list-wrap'><a href='/things-i-send-to-recruiters'>Things I Send to Recruiters
</a>
<span class='list-date'>December 2nd, 2016
</span>
</span>
</li>
<li id='_that-fucking-empty-brain-article'><span class='list-wrap'><a href='/that-fucking-empty-brain-article'>That Fucking Empty Brain Article
</a>
<span class='list-date'>October 20th, 2016
</span>
</span>
</li>
<li id='_trigger-space'><span class='list-wrap'><a href='/trigger-space'>Trigger Space
</a>
<span class='list-date'>September 17th, 2016
</span>
</span>
</li>
<li id='_not-a-real-post'><span class='list-wrap'><a href='/not-a-real-post'>Not a Real Post
</a>
<span class='list-date'>July 30th, 2016
</span>
</span>
</li>
<li id='_the-search-for-the-hitchhiker-s-guide-as-read-by-stephen-moore'><span class='list-wrap'><a href='/the-search-for-the-hitchhiker-s-guide-as-read-by-stephen-moore'>The Search for The Hitchhiker's Guide, as read by Stephen Moore
</a>
<span class='list-date'>July 17th, 2016
</span>
</span>
</li>
<li id='_the-gauntlet'><span class='list-wrap'><a href='/the-gauntlet'>The Gauntlet
</a>
<span class='list-date'>July 6th, 2016
</span>
</span>
</li>
<li id='_seriously-make-a-better-ecigarette'><span class='list-wrap'><a href='/seriously-make-a-better-ecigarette'>Seriously, Make a Better eCigarette
</a>
<span class='list-date'>May 28th, 2016
</span>
</span>
</li>
<li id='_how-to-worry-less-about-being-a-bad-programmer'><span class='list-wrap'><a href='/how-to-worry-less-about-being-a-bad-programmer'>How to Worry Less About Being a Bad Programmer
</a>
<span class='list-date'>May 27th, 2016
</span>
</span>
</li>
<li id='_mister-munjoy-and-the-year-of-moral-ambiguity'><span class='list-wrap'><a href='/mister-munjoy-and-the-year-of-moral-ambiguity'>Mister Munjoy and the Year of Moral Ambiguity
</a>
<span class='list-date'>April 18th, 2016
</span>
</span>
</li>
<li id='_the-wintry-mix'><span class='list-wrap'><a href='/the-wintry-mix'>The Wintry Mix
</a>
<span class='list-date'>March 22nd, 2016
</span>
</span>
</li>
<li id='_make-mongobot-great-again'><span class='list-wrap'><a href='/make-mongobot-great-again'>Make MongoBot Great Again!
</a>
<span class='list-date'>March 18th, 2016
</span>
</span>
</li>
<li id='_5-reasons-waiting-tables-is-a-horrific-job'><span class='list-wrap'><a href='/5-reasons-waiting-tables-is-a-horrific-job'>5 Reasons Waiting Tables is a Horrific Job
</a>
<span class='list-date'>February 29th, 2016
</span>
</span>
</li>
<li id='_shut-up-about-the-universe'><span class='list-wrap'><a href='/shut-up-about-the-universe'>Shut Up About the Universe
</a>
<span class='list-date'>February 15th, 2016
</span>
</span>
</li>
<li id='_quantum-lens-is-the-worst-book-i-ve-ever-read'><span class='list-wrap'><a href='/quantum-lens-is-the-worst-book-i-ve-ever-read'>Quantum Lens is the Worst Book I've Ever Read
</a>
<span class='list-date'>February 3rd, 2016
</span>
</span>
</li>
<li id='_positions-available'><span class='list-wrap'><a href='/positions-available'>Positions Available
</a>
<span class='list-date'>January 31st, 2016
</span>
</span>
</li>
<li id='_generation-byte'><span class='list-wrap'><a href='/generation-byte'>Generation Byte
</a>
<span class='list-date'>January 20th, 2016
</span>
</span>
</li>
<li id='_when-gods-die'><span class='list-wrap'><a href='/when-gods-die'>When Gods Die
</a>
<span class='list-date'>January 11th, 2016
</span>
</span>
</li>
<li id='_interviewing-is-broken'><span class='list-wrap'><a href='/interviewing-is-broken'>Interviewing is Broken
</a>
<span class='list-date'>December 30th, 2015
</span>
</span>
</li>
<li id='_the-mad-spitter-of-23rd-street'><span class='list-wrap'><a href='/the-mad-spitter-of-23rd-street'>The Mad Spitter of 23rd Street
</a>
<span class='list-date'>October 4th, 2015
</span>
</span>
</li>
<li id='_god-s-not-dead-a-film-student-s-review'><span class='list-wrap'><a href='/god-s-not-dead-a-film-student-s-review'>God's Not Dead: A Film Student's Review
</a>
<span class='list-date'>April 11th, 2015
</span>
</span>
</li>
<li id='_the-science-of-giving'><span class='list-wrap'><a href='/the-science-of-giving'>The Science of Giving
</a>
<span class='list-date'>April 6th, 2015
</span>
</span>
</li>
<li id='_proposal-for-new-rest-methods'><span class='list-wrap'><a href='/proposal-for-new-rest-methods'>Proposal for New REST Methods
</a>
<span class='list-date'>March 21st, 2015
</span>
</span>
</li>
<li id='_game-of-cards'><span class='list-wrap'><a href='/game-of-cards'>Game of Cards
</a>
<span class='list-date'>March 4th, 2015
</span>
</span>
</li>
<li id='_35-things-that-surprised-me-before-35'><span class='list-wrap'><a href='/35-things-that-surprised-me-before-35'>35 Things that Surprised Me Before 35
</a>
<span class='list-date'>February 28th, 2015
</span>
</span>
</li>
<li id='_trolling-marketers-for-profit-and-pleasure'><span class='list-wrap'><a href='/trolling-marketers-for-profit-and-pleasure'>Trolling Marketers for Profit and Pleasure
</a>
<span class='list-date'>January 16th, 2015
</span>
</span>
</li>
<li id='_the-fizzbuzz-from-outer-space-explained'><span class='list-wrap'><a href='/the-fizzbuzz-from-outer-space-explained'>The FizzBuzz from Outer Space Explained
</a>
<span class='list-date'>November 30th, 2014
</span>
</span>
</li>
<li id='_the-quantum-hitler-scale'><span class='list-wrap'><a href='/the-quantum-hitler-scale'>The Quantum Hitler Scale
</a>
<span class='list-date'>October 27th, 2014
</span>
</span>
</li>
<li id='_pet-math'><span class='list-wrap'><a href='/pet-math'>Pet Math
</a>
<span class='list-date'>August 25th, 2014
</span>
</span>
</li>
<li id='_publishing-sucks'><span class='list-wrap'><a href='/publishing-sucks'>Publishing Sucks
</a>
<span class='list-date'>August 19th, 2014
</span>
</span>
</li>
<li id='_everyday-skepticism'><span class='list-wrap'><a href='/everyday-skepticism'>Everyday Skepticism
</a>
<span class='list-date'>July 7th, 2014
</span>
</span>
</li>
<li id='_24-hours-of-privilege'><span class='list-wrap'><a href='/24-hours-of-privilege'>24 Hours of Privilege
</a>
<span class='list-date'>July 1st, 2014
</span>
</span>
</li>
<li id='_one-space-two-space-shut-up-you'><span class='list-wrap'><a href='/one-space-two-space-shut-up-you'>One Space, Two Space, Shut Up, #@$% You
</a>
<span class='list-date'>June 24th, 2014
</span>
</span>
</li>
<li id='_the-big-truth'><span class='list-wrap'><a href='/the-big-truth'>The Big Truth
</a>
<span class='list-date'>June 17th, 2014
</span>
</span>
</li>
<li id='_waiting-for-doctor-who'><span class='list-wrap'><a href='/waiting-for-doctor-who'>Waiting for Doctor Who
</a>
<span class='list-date'>June 12th, 2014
</span>
</span>
</li>
<li id='_nobody-understands-punctuation'><span class='list-wrap'><a href='/nobody-understands-punctuation'>Nobody. Understands. Punctuation.
</a>
<span class='list-date'>June 7th, 2014
</span>
</span>
</li>
<li id='_adventures-in-piracy'><span class='list-wrap'><a href='/adventures-in-piracy'>Adventures in Piracy
</a>
<span class='list-date'>May 22nd, 2014
</span>
</span>
</li>
<li id='_things-that-don-t-suck'><span class='list-wrap'><a href='/things-that-don-t-suck'>Things that Don't Suck
</a>
<span class='list-date'>May 12th, 2014
</span>
</span>
</li>
<li id='_programming-sucks'><span class='list-wrap'><a href='/programming-sucks'>Programming Sucks
</a>
<span class='list-date'>April 27th, 2014
</span>
</span>
</li>
<li id='_a-letter-from-fred-phelps'><span class='list-wrap'><a href='/a-letter-from-fred-phelps'>A Letter from Fred Phelps
</a>
<span class='list-date'>March 22nd, 2014
</span>
</span>
</li>
<li id='_the-writer-s-fallacy'><span class='list-wrap'><a href='/the-writer-s-fallacy'>The Writer's Fallacy
</a>
<span class='list-date'>January 19th, 2014
</span>
</span>
</li>
<li id='_chipotle-bias'><span class='list-wrap'><a href='/chipotle-bias'>Chipotle Bias
</a>
<span class='list-date'>November 24th, 2013
</span>
</span>
</li>
<li id='_me-and-the-nsa'><span class='list-wrap'><a href='/me-and-the-nsa'>Me and the NSA
</a>
<span class='list-date'>September 2nd, 2013
</span>
</span>
</li>
<li id='_why-everyone-in-greenwich-village-is-lost'><span class='list-wrap'><a href='/why-everyone-in-greenwich-village-is-lost'>Why Everyone in Greenwich Village is Lost
</a>
<span class='list-date'>July 17th, 2013
</span>
</span>
</li>
<li id='_the-battle-for-sweet-paradise'><span class='list-wrap'><a href='/the-battle-for-sweet-paradise'>The Battle for Sweet Paradise
</a>
<span class='list-date'>March 14th, 2013
</span>
</span>
</li>
<li id='_men-going-their-own-way'><span class='list-wrap'><a href='/men-going-their-own-way'>Men Going Their Own Way
</a>
<span class='list-date'>February 18th, 2013
</span>
</span>
</li>
<li id='_how-you-got-here'><span class='list-wrap'><a href='/how-you-got-here'>How You Got Here
</a>
<span class='list-date'>January 24th, 2013
</span>
</span>
</li>
<li id='_i-m-watching-twilight-so-you-don-t-have-to'><span class='list-wrap'><a href='/i-m-watching-twilight-so-you-don-t-have-to'>I'm Watching Twilight So You Don't Have To
</a>
<span class='list-date'>January 16th, 2013
</span>
</span>
</li>
<li id='_3-major-disappointments-in-otherwise-great-video-games'><span class='list-wrap'><a href='/3-major-disappointments-in-otherwise-great-video-games'>3 Major Disappointments in Otherwise Great Video Games
</a>
<span class='list-date'>November 2nd, 2012
</span>
</span>
</li>
<li id='_eulogy'><span class='list-wrap'><a href='/eulogy'>Eulogy
</a>
<span class='list-date'>September 22nd, 2012
</span>
</span>
</li>
<li id='_acceptable-losses'><span class='list-wrap'><a href='/acceptable-losses'>Acceptable Losses
</a>
<span class='list-date'>March 26th, 2012
</span>
</span>
</li>
<li id='_spilchking'><span class='list-wrap'><a href='/spilchking'>Spilchking
</a>
<span class='list-date'>March 20th, 2012
</span>
</span>
</li>
<li id='_grammar-maquis'><span class='list-wrap'><a href='/grammar-maquis'>Grammar Maquis
</a>
<span class='list-date'>January 31st, 2012
</span>
</span>
</li>
<li id='_responses-to-people-telling-me-to-get-over-the-death-thing'><span class='list-wrap'><a href='/responses-to-people-telling-me-to-get-over-the-death-thing'>Responses to People Telling Me to Get Over the Death Thing
</a>
<span class='list-date'>January 20th, 2012
</span>
</span>
</li>
<li id='_humble-sky'><span class='list-wrap'><a href='/humble-sky'>Humble Sky
</a>
<span class='list-date'>December 30th, 2011
</span>
</span>
</li>
<li id='_spektroscopy'><span class='list-wrap'><a href='/spektroscopy'>Spektroscopy
</a>
<span class='list-date'>December 27th, 2011
</span>
</span>
</li>
<li id='_humorless-and-insane-the-crucifixion-of-ed-rybicki'><span class='list-wrap'><a href='/humorless-and-insane-the-crucifixion-of-ed-rybicki'>Humorless and Insane: The Crucifixion of Ed Rybicki
</a>
<span class='list-date'>November 22nd, 2011
</span>
</span>
</li>
<li id='_michio-kaku-96-awesome'><span class='list-wrap'><a href='/michio-kaku-96-awesome'>Michio Kaku, 96% Awesome
</a>
<span class='list-date'>November 16th, 2011
</span>
</span>
</li>
<li id='_smackdown-baby-vs-kitten'><span class='list-wrap'><a href='/smackdown-baby-vs-kitten'>Smackdown: Baby vs. Kitten
</a>
<span class='list-date'>November 5th, 2011
</span>
</span>
</li>
<li id='_justin-bieber-s-relationship-advice'><span class='list-wrap'><a href='/justin-bieber-s-relationship-advice'>Justin Bieber's Relationship Advice
</a>
<span class='list-date'>October 30th, 2011
</span>
</span>
</li>
<li id='_etiquette-lost'><span class='list-wrap'><a href='/etiquette-lost'>Etiquette Lost
</a>
<span class='list-date'>October 8th, 2011
</span>
</span>
</li>
<li id='_searle-s-court'><span class='list-wrap'><a href='/searle-s-court'>Searle's Court
</a>
<span class='list-date'>October 2nd, 2011
</span>
</span>
</li>
<li id='_for-fuck-s-sake-irene'><span class='list-wrap'><a href='/for-fuck-s-sake-irene'>For Fuck's Sake Irene
</a>
<span class='list-date'>September 6th, 2011
</span>
</span>
</li>
<li id='_the-episode-conclusions'><span class='list-wrap'><a href='/the-episode-conclusions'>The Episode: Conclusions
</a>
<span class='list-date'>August 17th, 2011
</span>
</span>
</li>
<li id='_the-episode-aftermath'><span class='list-wrap'><a href='/the-episode-aftermath'>The Episode: Aftermath
</a>
<span class='list-date'>August 12th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-16-the-end'><span class='list-wrap'><a href='/the-episode-part-16-the-end'>The Episode, Part 16: The End
</a>
<span class='list-date'>August 10th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-15-the-light-and-the-void'><span class='list-wrap'><a href='/the-episode-part-15-the-light-and-the-void'>The Episode, Part 15: The Light and The Void
</a>
<span class='list-date'>August 8th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-14-released-back-into-the-wild'><span class='list-wrap'><a href='/the-episode-part-14-released-back-into-the-wild'>The Episode, Part 14: Released Back Into the Wild
</a>
<span class='list-date'>August 6th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-13-crazy-love'><span class='list-wrap'><a href='/the-episode-part-13-crazy-love'>The Episode, Part 13: Crazy Love
</a>
<span class='list-date'>August 5th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-12-settling-in'><span class='list-wrap'><a href='/the-episode-part-12-settling-in'>The Episode, Part 12: Settling In
</a>
<span class='list-date'>August 2nd, 2011
</span>
</span>
</li>
<li id='_the-episode-part-10-grand-theft-auto-orono-dreams'><span class='list-wrap'><a href='/the-episode-part-10-grand-theft-auto-orono-dreams'>The Episode, Part 11: Grand Theft Auto: Orono Dreams
</a>
<span class='list-date'>July 31st, 2011
</span>
</span>
</li>
<li id='_the-episode-part-10-the-milieu'><span class='list-wrap'><a href='/the-episode-part-10-the-milieu'>The Episode, Part 10: The Milieu
</a>
<span class='list-date'>July 29th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-9-welcome-to-the-nuthouse'><span class='list-wrap'><a href='/the-episode-part-9-welcome-to-the-nuthouse'>The Episode, Part 9: Welcome to the Nuthouse
</a>
<span class='list-date'>July 27th, 2011
</span>
</span>
</li>
<li id='_the-episode-interlude'><span class='list-wrap'><a href='/the-episode-interlude'>The Episode: Interlude
</a>
<span class='list-date'>July 26th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-8-people-finally-start-catching-on'><span class='list-wrap'><a href='/the-episode-part-8-people-finally-start-catching-on'>The Episode, Part 8: People Finally Start Catching On
</a>
<span class='list-date'>July 24th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-7-the-naked-guy'><span class='list-wrap'><a href='/the-episode-part-7-the-naked-guy'>The Episode, Part 7: The Naked Guy
</a>
<span class='list-date'>July 22nd, 2011
</span>
</span>
</li>
<li id='_the-episode-part-6-the-mission'><span class='list-wrap'><a href='/the-episode-part-6-the-mission'>The Episode, Part 6: The Mission
</a>
<span class='list-date'>July 20th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-5-through-the-looking-coke-mirror'><span class='list-wrap'><a href='/the-episode-part-5-through-the-looking-coke-mirror'>The Episode, Part 5: Through the Looking Coke Mirror
</a>
<span class='list-date'>July 17th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-4-i-party-with-a-bunch-of-hippies-and-do-more-drugs'><span class='list-wrap'><a href='/the-episode-part-4-i-party-with-a-bunch-of-hippies-and-do-more-drugs'>The Episode, Part 4: I Party With a Bunch of Hippies and Do More Drugs
</a>
<span class='list-date'>July 14th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-3-i-get-the-fuck-out-of-kansas'><span class='list-wrap'><a href='/the-episode-part-3-i-get-the-fuck-out-of-kansas'>The Episode, Part 3: I Get the Fuck Out of Kansas
</a>
<span class='list-date'>July 12th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-2-everything-goes-straight-to-hell'><span class='list-wrap'><a href='/the-episode-part-2-everything-goes-straight-to-hell'>The Episode, Part 2: Everything Goes Straight to Hell
</a>
<span class='list-date'>July 10th, 2011
</span>
</span>
</li>
<li id='_the-episode-part-1'><span class='list-wrap'><a href='/the-episode-part-1'>The Episode, Part 1: Prelude
</a>
<span class='list-date'>July 4th, 2011
</span>
</span>
</li>
<li id='_amsterdam-sucks'><span class='list-wrap'><a href='/amsterdam-sucks'>Amsterdam Sucks
</a>
<span class='list-date'>July 3rd, 2011
</span>
</span>
</li>
<li id='_online-dating'><span class='list-wrap'><a href='/online-dating'>Online Dating
</a>
<span class='list-date'>June 29th, 2011
</span>
</span>
</li>
<li id='_nobody-s-bitch'><span class='list-wrap'><a href='/nobody-s-bitch'>Nobody's Bitch
</a>
<span class='list-date'>June 19th, 2011
</span>
</span>
</li>
<li id='_coming-of-age-italy-1996'><span class='list-wrap'><a href='/coming-of-age-italy-1996'>Coming of Age, Italy, 1996
</a>
<span class='list-date'>June 11th, 2011
</span>
</span>
</li>
<li id='_24-911-and-closure'><span class='list-wrap'><a href='/24-911-and-closure'>24, 911, and Closure
</a>
<span class='list-date'>May 12th, 2011
</span>
</span>
</li>
<li id='_iphone-app-reviews'><span class='list-wrap'><a href='/iphone-app-reviews'>iPhone App Reviews
</a>
<span class='list-date'>April 14th, 2011
</span>
</span>
</li>
<li id='_tactical-error'><span class='list-wrap'><a href='/tactical-error'>Tactical Error
</a>
<span class='list-date'>April 1st, 2011
</span>
</span>
</li>
<li id='_job-advice'><span class='list-wrap'><a href='/job-advice'>Job Advice
</a>
<span class='list-date'>February 23rd, 2011
</span>
</span>
</li>
<li id='_jose-armando-vasquez-lopez'><span class='list-wrap'><a href='/jose-armando-vasquez-lopez'>Jose Armando Vasquez Lopez
</a>
<span class='list-date'>February 19th, 2011
</span>
</span>
</li>
<li id='_caw'><span class='list-wrap'><a href='/caw'>CAW
</a>
<span class='list-date'>February 11th, 2011
</span>
</span>
</li>
<li id='_playa-gotta-play'><span class='list-wrap'><a href='/playa-gotta-play'>Playa Gotta Play
</a>
<span class='list-date'>February 9th, 2011
</span>
</span>
</li>
<li id='_mouse-girl'><span class='list-wrap'><a href='/mouse-girl'>Mouse Girl
</a>
<span class='list-date'>February 7th, 2011
</span>
</span>
</li>
<li id='_nothing-is-free'><span class='list-wrap'><a href='/nothing-is-free'>Nothing is Free
</a>
<span class='list-date'>February 4th, 2011
</span>
</span>
</li>
<li id='_halloween'><span class='list-wrap'><a href='/halloween'>Halloween
</a>
<span class='list-date'>February 1st, 2011
</span>
</span>
</li>
<li id='_dal'><span class='list-wrap'><a href='/dal'>Dal
</a>
<span class='list-date'>January 31st, 2011
</span>
</span>
</li>
<li id='_the-comedian'><span class='list-wrap'><a href='/the-comedian'>The Comedian
</a>
<span class='list-date'>January 30th, 2011
</span>
</span>
</li>
<li id='_and-she-stoned-me'><span class='list-wrap'><a href='/and-she-stoned-me'>And She Stoned Me
</a>
<span class='list-date'>January 29th, 2011
</span>
</span>
</li>
<li id='_teenagers-are-stupid'><span class='list-wrap'><a href='/teenagers-are-stupid'>Teenagers are Stupid
</a>
<span class='list-date'>January 28th, 2011
</span>
</span>
</li>
<li id='_bad-movie-choice'><span class='list-wrap'><a href='/bad-movie-choice'>Bad Movie Choice
</a>
<span class='list-date'>January 27th, 2011
</span>
</span>
</li>
<li id='_animal-freak-makes-millions-with-this-one-simple-rule'><span class='list-wrap'><a href='/animal-freak-makes-millions-with-this-one-simple-rule'>Animal Freak Makes Millions With This One Simple Rule
</a>
<span class='list-date'>January 23rd, 2011
</span>
</span>
</li>
<li id='_a-letter-to-nassim-nicholas-taleb'><span class='list-wrap'><a href='/a-letter-to-nassim-nicholas-taleb'>A Letter to Nassim Nicholas Taleb
</a>
<span class='list-date'>January 15th, 2011
</span>
</span>
</li>
<li id='_2011'><span class='list-wrap'><a href='/2011'>2011
</a>
<span class='list-date'>January 2nd, 2011
</span>
</span>
</li>
<li id='_the-idiot-coin'><span class='list-wrap'><a href='/the-idiot-coin'>The Idiot Coin
</a>
<span class='list-date'>December 30th, 2010
</span>
</span>
</li>
<li id='_being-thankful'><span class='list-wrap'><a href='/being-thankful'>Being Thankful
</a>
<span class='list-date'>December 30th, 2010
</span>
</span>
</li>
<li id='_someone-bless-our-weird-fucking-country'><span class='list-wrap'><a href='/someone-bless-our-weird-fucking-country'>Someone Bless Our Weird Fucking Country
</a>
<span class='list-date'>December 3rd, 2010
</span>
</span>
</li>
<li id='_functionalish'><span class='list-wrap'><a href='/functionalish'>Functionalish
</a>
<span class='list-date'>October 22nd, 2010
</span>
</span>
</li>
<li id='_the-mating-habits-of-the-knobelsdorf'><span class='list-wrap'><a href='/the-mating-habits-of-the-knobelsdorf'>The Mating Habits of the Knobelsdorf
</a>
<span class='list-date'>October 15th, 2010
</span>
</span>
</li>
<li id='_how-to-dress-for-success'><span class='list-wrap'><a href='/how-to-dress-for-success'>How to Dress for Success
</a>
<span class='list-date'>October 8th, 2010
</span>
</span>
</li>
<li id='_30-things-i-thought-i-d-do-by-the-time-i-was-30'><span class='list-wrap'><a href='/30-things-i-thought-i-d-do-by-the-time-i-was-30'>30 Things I thought I'd do by the time I was 30
</a>
<span class='list-date'>October 1st, 2010
</span>
</span>
</li>
<li id='_a-brief-history-of-manhood-as-illustrated-by-star-trek-captains'><span class='list-wrap'><a href='/a-brief-history-of-manhood-as-illustrated-by-star-trek-captains'>A Brief History of Manhood as Illustrated by Star Trek Captains
</a>
<span class='list-date'>September 24th, 2010
</span>
</span>
</li>
<li id='_i-would-rather-burn-in-hell'><span class='list-wrap'><a href='/i-would-rather-burn-in-hell'>I Would Rather Burn in Hell
</a>
<span class='list-date'>July 25th, 2010
</span>
</span>
</li>
<li id='_we-are-a-hipster-of-one'><span class='list-wrap'><a href='/we-are-a-hipster-of-one'>We are a Hipster of One
</a>
<span class='list-date'>July 18th, 2010
</span>
</span>
</li>
<li id='_atheist-translation-guide-for-believers'><span class='list-wrap'><a href='/atheist-translation-guide-for-believers'>Atheist Translation Guide for Believers
</a>
<span class='list-date'>March 25th, 2010
</span>
</span>
</li>
<li id='_observations-of-a-straight-white-male-with-no-interesting-fetishes'><span class='list-wrap'><a href='/observations-of-a-straight-white-male-with-no-interesting-fetishes'>Observations of a Straight White Male with No Interesting Fetishes
</a>
<span class='list-date'>January 17th, 2010
</span>
</span>
</li>
<li id='_pussiologiphobia'><span class='list-wrap'><a href='/pussiologiphobia'>Pussiologiphobia
</a>
<span class='list-date'>December 27th, 2009
</span>
</span>
</li>
<li id='_prudent-isex'><span class='list-wrap'><a href='/prudent-isex'>Prudent iSex
</a>
<span class='list-date'>December 23rd, 2009
</span>
</span>
</li>
<li id='_i-wetware'><span class='list-wrap'><a href='/i-wetware'>I, Wetware
</a>
<span class='list-date'>November 28th, 2009
</span>
</span>
</li>
<li id='_city-guide'><span class='list-wrap'><a href='/city-guide'>City Guide
</a>
<span class='list-date'>October 3rd, 2009
</span>
</span>
</li>
<li id='_end-me-a-story'><span class='list-wrap'><a href='/end-me-a-story'>End Me a Story
</a>
<span class='list-date'>September 23rd, 2009
</span>
</span>
</li>
<li id='_kindling'><span class='list-wrap'><a href='/kindling'>Kindling
</a>
<span class='list-date'>August 3rd, 2009
</span>
</span>
</li>
<li id='_kill-your-heroes'><span class='list-wrap'><a href='/kill-your-heroes'>Kill Your Heroes
</a>
<span class='list-date'>February 1st, 2009
</span>
</span>
</li>
<li id='_man-are-stupid-women-are-crazy'><span class='list-wrap'><a href='/man-are-stupid-women-are-crazy'>Man are Stupid, Women are Crazy
</a>
<span class='list-date'>January 25th, 2009
</span>
</span>
</li>
<li id='_camera-angst'><span class='list-wrap'><a href='/camera-angst'>Camera Angst
</a>
<span class='list-date'>January 18th, 2009
</span>
</span>
</li>
<li id='_act-without-thinking'><span class='list-wrap'><a href='/act-without-thinking'>Act Without Thinking
</a>
<span class='list-date'>January 12th, 2009
</span>
</span>
</li>
<li id='_get-me-back-to-gomorrah'><span class='list-wrap'><a href='/get-me-back-to-gomorrah'>Get Me Back to Gomorrah
</a>
<span class='list-date'>January 4th, 2009
</span>
</span>
</li>
<li id='_inadequate-reminders'><span class='list-wrap'><a href='/inadequate-reminders'>Inadequate Reminders
</a>
<span class='list-date'>December 28th, 2008
</span>
</span>
</li>
<li id='_odds-are-bad'><span class='list-wrap'><a href='/odds-are-bad'>Odds are Bad
</a>
<span class='list-date'>August 17th, 2008
</span>
</span>
</li>
<li id='_mensa-can-suck-my-salty-lobes'><span class='list-wrap'><a href='/mensa-can-suck-my-salty-lobes'>Mensa Can Suck My Salty Lobes
</a>
<span class='list-date'>June 11th, 2008
</span>
</span>
</li>
<li id='_banking-trust'><span class='list-wrap'><a href='/banking-trust'>Banking Trust
</a>
<span class='list-date'>April 22nd, 2008
</span>
</span>
</li>
<li id='_stalkability-or-invertible-gmail-com'><span class='list-wrap'><a href='/stalkability-or-invertible-gmail-com'>Stalkability (or, <span class="__cf_email__" data-cfemail="e980879f8c9b9d808b858ca98e84888085c78a8684">[email&#160;protected]</span> )
</a>
<span class='list-date'>April 22nd, 2008
</span>
</span>
</li>
<li id='_porn'><span class='list-wrap'><a href='/porn'>Porn!
</a>
<span class='list-date'>April 21st, 2008
</span>
</span>
</li>
<li id='_god-again'><span class='list-wrap'><a href='/god-again'>God, Again
</a>
<span class='list-date'>February 23rd, 2008
</span>
</span>
</li>
<li id='_the-commuter-threat'><span class='list-wrap'><a href='/the-commuter-threat'>The Commuter Threat
</a>
<span class='list-date'>January 23rd, 2008
</span>
</span>
</li>
<li id='_research'><span class='list-wrap'><a href='/research'>Research!
</a>
<span class='list-date'>January 17th, 2008
</span>
</span>
</li>
<li id='_excuse-me-sorry-thank-you'><span class='list-wrap'><a href='/excuse-me-sorry-thank-you'>Excuse Me, Sorry, Thank You
</a>
<span class='list-date'>November 24th, 2007
</span>
</span>
</li>
<li id='_pez-dispenser-head-chinese-delivery-man-on-moped'><span class='list-wrap'><a href='/pez-dispenser-head-chinese-delivery-man-on-moped'>Pez Dispenser Head Chinese Delivery Man On Moped
</a>
<span class='list-date'>November 24th, 2007
</span>
</span>
</li>
<li id='_water-water-everywhere'><span class='list-wrap'><a href='/water-water-everywhere'>Water, Water, Everywhere
</a>
<span class='list-date'>October 15th, 2007
</span>
</span>
</li>
<li id='_a-reason-for-nothing'><span class='list-wrap'><a href='/a-reason-for-nothing'>A Reason for Nothing
</a>
<span class='list-date'>September 7th, 2007
</span>
</span>
</li>
<li id='_think-before-you-babble'><span class='list-wrap'><a href='/think-before-you-babble'>Think Before You Babble
</a>
<span class='list-date'>May 24th, 2007
</span>
</span>
</li>
<li id='_the-bitter-pill-or-swallow-this'><span class='list-wrap'><a href='/the-bitter-pill-or-swallow-this'>The Bitter Pill (or "Swallow This")
</a>
<span class='list-date'>January 29th, 2007
</span>
</span>
</li>
<li id='_nipping-off-the-christmas-spirit'><span class='list-wrap'><a href='/nipping-off-the-christmas-spirit'>Nipping Off The Christmas Spirit
</a>
<span class='list-date'>December 18th, 2006
</span>
</span>
</li>
<li id='_like-clockwork'><span class='list-wrap'><a href='/like-clockwork'>Like Clockwork
</a>
<span class='list-date'>November 8th, 2006
</span>
</span>
</li>
<li id='_ex-goth-seeks-same-for-weekend-regression'><span class='list-wrap'><a href='/ex-goth-seeks-same-for-weekend-regression'>Ex Goth Seeks Same For Weekend Regression
</a>
<span class='list-date'>October 24th, 2006
</span>
</span>
</li>
<li id='_stop-blaming-our-parents'><span class='list-wrap'><a href='/stop-blaming-our-parents'>Stop Blaming Our Parents
</a>
<span class='list-date'>October 20th, 2006
</span>
</span>
</li>
<li id='_cross-eyed-in-the-search-for-holographic-love'><span class='list-wrap'><a href='/cross-eyed-in-the-search-for-holographic-love'>Cross Eyed in the Search for Holographic Love
</a>
<span class='list-date'>October 11th, 2006
</span>
</span>
</li>
<li id='_dear-moveon'><span class='list-wrap'><a href='/dear-moveon'>Dear MoveOn
</a>
<span class='list-date'>October 11th, 2006
</span>
</span>
</li>
<li id='_sudofubar'><span class='list-wrap'><a href='/sudofubar'>Sudofubar
</a>
<span class='list-date'>October 11th, 2006
</span>
</span>
</li>
<li id='_stormy-weather'><span class='list-wrap'><a href='/stormy-weather'>Stormy Weather
</a>
<span class='list-date'>April 25th, 2006
</span>
</span>
</li>
<li id='_ian-m-tripp-is-building-a-bomb'><span class='list-wrap'><a href='/ian-m-tripp-is-building-a-bomb'>Ian M Tripp Is Building a Bomb
</a>
<span class='list-date'>April 21st, 2006
</span>
</span>
</li>
<li id='_love-thy-neighbor-like-thy-brother'><span class='list-wrap'><a href='/love-thy-neighbor-like-thy-brother'>Love Thy Neighbor Like Thy Brother
</a>
<span class='list-date'>October 13th, 2005
</span>
</span>
</li>
<li id='_a-leg-to-stand-on'><span class='list-wrap'><a href='/a-leg-to-stand-on'>A Leg to Stand On
</a>
<span class='list-date'>September 20th, 2005
</span>
</span>
</li>
<li id='_instantaneity-a-brief-and-uninformed-history'><span class='list-wrap'><a href='/instantaneity-a-brief-and-uninformed-history'>Instantaneity - A Brief and Uninformed History
</a>
<span class='list-date'>September 6th, 2005
</span>
</span>
</li>
<li id='_stony-blue-vega'><span class='list-wrap'><a href='/stony-blue-vega'>Stony Blue Vega
</a>
<span class='list-date'>September 3rd, 2005
</span>
</span>
</li>
<li id='_buddha-logic'><span class='list-wrap'><a href='/buddha-logic'>Buddha Logic
</a>
<span class='list-date'>September 3rd, 2005
</span>
</span>
</li>
<li id='_digital-representation'><span class='list-wrap'><a href='/digital-representation'>Digital Representation
</a>
<span class='list-date'>September 3rd, 2005
</span>
</span>
</li>
<li id='_know-their-obsessions-before-you-try-to-get-them-into-bed'><span class='list-wrap'><a href='/know-their-obsessions-before-you-try-to-get-them-into-bed'>Know Their Obsessions Before You Try to Get Them Into Bed
</a>
<span class='list-date'>September 3rd, 2005
</span>
</span>
</li>
<li id='_drinking'><span class='list-wrap'><a href='/drinking'>Drinking
</a>
<span class='list-date'>September 3rd, 2005
</span>
</span>
</li>
<li id='_hot-or-not'><span class='list-wrap'><a href='/hot-or-not'>Hot or Not
</a>
<span class='list-date'>September 3rd, 2005
</span>
</span>
</li>
<li id='_denial'><span class='list-wrap'><a href='/denial'>Denial
</a>
<span class='list-date'>September 3rd, 2005
</span>
</span>
</li>
<li id='_buffy-love-me'><span class='list-wrap'><a href='/buffy-love-me'>Buffy, Love Me
</a>
<span class='list-date'>September 3rd, 2005
</span>
</span>
</li>
<li id='_posthumorously'><span class='list-wrap'><a href='/posthumorously'>Posthumorously
</a>
<span class='list-date'>
</span>
</span>
</li>
</ul>
</ul>
</div>
<div class="essay">
<div id="title"><h1 class='title'>Programming Sucks
</h1>
<div class='date'>Composed on the 27th of April in the year 2014, at 12:52<span> PM</span>. It was Sunday.
</div>
</div>
<div class='entry'><div class='content'><div id='cont'><p><img src="../blog_images/code-horror.gif" /><span class="uno">E</span>very friend I have with a job that involves picking up something heavier than a laptop more than twice a week eventually finds a way to slip something like this into conversation: &#8220;Bro,<sup><a id="return1" class="footnote" href="#footnote1">1</a></sup><a class="mobile mobile-footnote" href="#fp1" targ="fp1">[1]</a> you don&#8217;t work hard. I just worked a 4700-hour week digging a tunnel under Mordor with a screwdriver.&#8221;</p><p>They have a point. Mordor sucks, and it&#8217;s certainly more physically taxing to dig a tunnel than poke at a keyboard unless you&#8217;re an ant. But, for the sake of the argument, can we agree that stress and insanity are bad things? Awesome. Welcome to programming.</p>
<h3>All programming teams are constructed by and of crazy people</h3>
<p>Imagine joining an engineering team. You&#8217;re excited and full of ideas, probably just out of school and a world of clean, beautiful designs, awe-inspiring in their aesthetic unity of purpose, economy, and strength. You start by meeting Mary, project leader for a bridge in a major metropolitan area. Mary introduces you to Fred, after you get through the fifteen security checks installed by Dave because Dave had his sweater stolen off his desk once and Never Again. Fred only works with wood, so you ask why he&#8217;s involved because this bridge is supposed to allow rush-hour traffic full of cars full of mortal humans to cross a 200-foot drop over rapids. Don&#8217;t worry, says Mary, Fred&#8217;s going to handle the walkways. What walkways? Well Fred made a good case for walkways and they&#8217;re going to add to the bridge&#8217;s appeal. Of course, they&#8217;ll have to be built without railings, because there&#8217;s a strict no railings rule enforced by Phil, who&#8217;s not an engineer. Nobody&#8217;s sure what Phil does, but it&#8217;s definitely full of synergy and has to do with upper management, whom none of the engineers want to deal with so they just let Phil do what he wants. Sara, meanwhile, has found several hemorrhaging-edge paving techniques, and worked them all into the bridge design, so you&#8217;ll have to build around each one as the bridge progresses, since each one means different underlying support and safety concerns. Tom and Harry have been working together for years, but have an ongoing feud over whether to use metric or imperial measurements, and it&#8217;s become a case of &#8220;whoever got to that part of the design first.&#8221; This has been such a headache for the people actually screwing things together, they&#8217;ve given up and just forced, hammered, or welded their way through the day with whatever parts were handy. Also, the bridge was designed as a suspension bridge, but nobody actually knew how to build a suspension bridge, so they got halfway through it and then just added extra support columns to keep the thing standing, but they left the suspension cables because they&#8217;re still sort of holding up parts of the bridge. Nobody knows which parts, but everybody&#8217;s pretty sure they&#8217;re important parts. After the introductions are made, you are invited to come up with some new ideas, but you don&#8217;t have any because you&#8217;re a propulsion engineer and don&#8217;t know anything about bridges.</p><p>Would you drive across this bridge? No. If it somehow got built, everybody involved would be executed. Yet some version of this dynamic wrote every single program you have ever used, banking software, websites, and a ubiquitously used program that was supposed to protect information on the internet but didn&#8217;t.</p>
<h3>All code is bad</h3>
<p>Every programmer occasionally, when nobody&#8217;s home, turns off the lights, pours a glass of scotch, puts on some light German electronica, and opens up a file on their computer. It&#8217;s a different file for every programmer. Sometimes they wrote it, sometimes they found it and knew they had to save it. They read over the lines, and weep at their beauty, then the tears turn bitter as they remember the rest of the files and the inevitable collapse of all that is good and true in the world.</p><p>This file is Good Code. It has sensible and consistent names for functions and variables. It&#8217;s concise. It doesn&#8217;t do anything obviously stupid. It has never had to live in the wild, or answer to a sales team. It does exactly one, mundane, specific thing, and it does it well. It was written by a single person, and never touched by another. It reads like poetry written by someone over thirty.</p><p>Every programmer starts out writing some perfect little snowflake like this. Then they&#8217;re told on Friday they need to have six hundred snowflakes written by Tuesday, so they cheat a bit here and there and maybe copy a few snowflakes and try to stick them together or they have to ask a coworker to work on one who melts it and then all the programmers&#8217; snowflakes get dumped together in some inscrutable shape and somebody leans a Picasso on it because nobody wants to see the cat urine soaking into all your broken snowflakes melting in the light of day. Next week, everybody shovels more snow on it to keep the Picasso from falling over.</p><p>There&#8217;s a theory that you can cure this by following standards, except there are more &#8220;standards&#8221; than there are things computers can actually do, and these standards are all variously improved and maligned by the personal preferences of the people coding them, so no collection of code has ever made it into the real world without doing a few dozen identical things a few dozen not even remotely similar ways. The first few weeks of any job are just figuring out how a program works even if you&#8217;re familiar with every single language, framework, and standard that&#8217;s involved, because standards are unicorns.</p>
<h3>There will always be darkness</h3>
<p>I spent a few years growing up with a closet in my bedroom. The closet had an odd design. It looked normal at first, then you walked in to do closet things, and discovered that the wall on your right gave way to an alcove, making for a handy little shelf. Then you looked up, and the wall at the back of the alcove gave way again, into a crawlspace of utter nothingness, where no light could fall and which you immediately identified as the daytime retreat for every ravenous monster you kept at bay with flashlights and stuffed animals each night.</p><p>This is what it is to learn programming. You get to know your useful tools, then you look around, and there are some handy new tools nearby and those tools show you the bottomless horror that was always right next to your bed.</p><p>For example, say you&#8217;re an average web developer. You&#8217;re familiar with a dozen programming languages, tons of helpful libraries, standards, protocols, what have you. You still have to learn more at the rate of about one a week, and remember to check the hundreds of things you know to see if they&#8217;ve been updated or broken and make sure they all still work together and that nobody fixed the bug in one of them that you exploited to do something you thought was really clever one weekend when you were drunk. You&#8217;re all up to date, so that&#8217;s cool, then everything breaks.</p><p>&#8220;Double you tee eff?&#8221; you say, and start hunting for the problem. You discover that one day, some idiot decided that since another idiot decided that 1/0 should equal infinity, they could just use that as a shorthand for &#8220;Infinity&#8221; when simplifying their code. Then a non-idiot rightly decided that this was idiotic, which is what the original idiot should have decided, but since he didn&#8217;t, the non-idiot decided to be a dick and make this a failing error in his new compiler. Then he decided he wasn&#8217;t going to tell anyone that this was an error, because he&#8217;s a dick, and now all your snowflakes are urine and you can&#8217;t even find the cat.</p><p>You are an expert in all these technologies, and that&#8217;s a good thing, because that expertise let you spend only six hours figuring out what went wrong, as opposed to losing your job. You now have one extra little fact to tuck away in the millions of little facts you have to memorize because so many of the programs you depend on are written by dicks and idiots.</p><p>And that&#8217;s just in your own chosen field, which represents such a tiny fraction of all the things there are to know in computer science you might as well never have learned anything at all. Not a single living person knows how everything in your five-year-old MacBook actually works. Why do we tell you to turn it off and on again? Because we don&#8217;t have the slightest clue what&#8217;s wrong with it, and it&#8217;s really easy to induce coma in computers and have their built-in team of automatic doctors try to figure it out for us. The only reason coders&#8217; computers work better than non-coders&#8217; computers is coders know computers are schizophrenic little children with auto-immune diseases and we don&#8217;t beat them when they&#8217;re bad.</p>
<h3>A lot of work is done on the internet and the internet is its own special hellscape</h3>
<p>Remember that stuff about crazy people and bad code? The internet is that except it&#8217;s literally a billion times worse. Websites that are glorified shopping carts with maybe three dynamic pages are maintained by teams of people around the clock, because the truth is everything is breaking all the time, everywhere, for everyone. Right now someone who works for Facebook is getting tens of thousands of error messages and frantically trying to find the problem before the whole charade collapses. There&#8217;s a team at a Google office that hasn&#8217;t slept in three days. Somewhere there&#8217;s a database programmer surrounded by empty Mountain Dew bottles whose husband thinks she&#8217;s dead. And if these people stop, the world burns. Most people don&#8217;t even know what sysadmins do, but trust me, if they all took a lunch break at the same time they wouldn&#8217;t make it to the deli before you ran out of bullets protecting your canned goods from roving bands of mutants.</p><p>You can&#8217;t restart the internet. Trillions of dollars depend on a rickety cobweb of unofficial agreements and &#8220;good enough for now&#8221; code with comments like &#8220;TODO: FIX THIS IT&#8217;S A REALLY DANGEROUS HACK BUT I DON&#8217;T KNOW WHAT&#8217;S WRONG&#8221; that were written ten years ago. I haven&#8217;t even mentioned the legions of people attacking various parts of the internet for espionage and profit or because they&#8217;re bored. Ever heard of 4chan? 4chan might destroy your life and business because they decided they didn&#8217;t like you for an afternoon, and we don&#8217;t even worry about 4chan because another nuke doesn&#8217;t make that much difference in a nuclear winter.</p><p>On the internet, it&#8217;s okay to say, &#8220;You know, this kind of works some of the time if you&#8217;re using the right technology,&#8221; and BAM! it&#8217;s part of the internet now. Anybody with a couple of hundred dollars and a computer can snag a little bit of the internet and put up whatever awful chunks of hack code they want and then attach their little bit to a bunch of big bits and everything gets a little bit worse. Even the good coders don&#8217;t bother to learn the arcane specifications outlined by the organizations people set up to implement some unicorns, so everybody spends half their time coping with the fact that nothing matches anything or makes any sense and might break at any time and we just try to cover it up and hope no one notices.</p><p>Here are the secret rules of the internet: five minutes after you open a web browser for the first time, a kid in Russia has your social security number. Did you sign up for something? A computer at the NSA now automatically tracks your physical location for the rest of your life. Sent an email? Your email address just went up on a billboard in Nigeria.</p><p>These things aren&#8217;t true because we don&#8217;t care and don&#8217;t try to stop them, they&#8217;re true because everything is broken because there&#8217;s no good code and everybody&#8217;s just trying to keep it running. That&#8217;s your job if you work with the internet: hoping the last thing you wrote is good enough to survive for a few hours so you can eat dinner and catch a nap.</p>
<h3>We didn&#8217;t start out crazy, we&#8217;re being driven crazy</h3>
<pre>
<code>
ERROR: Attempted to parse HTML with regular expression; system returned Cthulhu.
</code>
</pre>
<p>Funny, right? No? How about this exchange:</p> <br/>
<p>&#8220;Is that called arrayReverse?&#8221;</p><p>&#8220;s/camel/_/&#8221;</p><p>&#8220;Cool thanks.&#8221;</p> <br/>
<p>Wasn&#8217;t that guy helpful? With the camel? Doesn&#8217;t that seem like an appropriate response? No? Good. You can still find Jesus. You have not yet spent so much of your life reading code that you begin to talk in it. The human brain isn&#8217;t particularly good at basic logic and now there&#8217;s a whole career in doing nothing but really, really complex logic. Vast chains of abstract conditions and requirements have to be picked through to discover things like missing commas. Doing this all day leaves you in a state of mild aphasia as you look at people&#8217;s faces while they&#8217;re speaking and you don&#8217;t know they&#8217;ve finished because there&#8217;s no semicolon. You immerse yourself in a world of total meaninglessness where all that matters is a little series of numbers went into a giant labyrinth of symbols and a different series of numbers or a picture of a kitten came out the other end.</p><p>The destructive impact on the brain is demonstrated by the programming languages people write. This is a program:</p>
<pre>
<code>
#include &lt;iostream>
int main( int argc, char** argv ) {
std::cout << "Hello World!" << std::endl;
return 0;
}
</code>
</pre>
<p>That program does exactly the same thing as this program:</p>
<pre>
<code>
`r```````````.H.e.l.l.o. .w.o.r.l.di
</code>
</pre>
<p>And this program:</p>
<pre>
<code>
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]
>++++++++[<++++>-] <.>+++++++++++[<++++++++>-]<-.--------.+++
.------.--------.[-]>++++++++[<++++>- ]<+.[-]++++++++++.
</code>
</pre>
<p>And this one:</p>
<pre>
<code>
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook!
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook.
</code>
</pre>
<p>And once somebody wrote a programming language that let somebody else write this:</p>
<pre>
<code>
#:: ::-| ::-| .-. :||-:: 0-| .-| ::||-| .:|-. :||
open(Q,$0);while(<Q>){if(/^#(.*)$/){for(split('-',$1)){$q=0;for(split){s/|
/:.:/xg;s/:/../g;$Q=$_?length:$_;$q+=$q?$Q:$Q*20;}print chr($q);}}}print"n";
#.: ::||-| .||-| :|||-| ::||-| ||-:: :|||-| .:|
</code>
</pre>
<p>According to the author, that program is "two lines of code that parse two lines of embedded comments in the code to read the Mayan numbers representing the individual ASCII characters that make up the magazine title, rendered in 90-degree rotated ASCII art."</p><p>That program won a contest, because of course it did. Do you want to live in a world like this? No. This is a world where you can smoke a pack a day and nobody even questions it. "Of course he smokes a pack a day, who wouldn't?" Eventually every programmer wakes up and before they're fully conscious they see their whole world and every relationship in it as chunks of code, and they trade stories about it as if sleepiness triggering acid trips is a normal thing that happens to people. This is a world where people eschew sex to write a programming language for orangutans. All programmers are forcing their brains to do things brains were never meant to do in a situation they can never make better, ten to fifteen hours a day, five to seven days a week, and every one of them is slowly going mad.</p><p><br/></p> <code>&lt;/rant></code>
<p><br/></p><p>So no, I&#8217;m not required to be able to lift objects weighing up to fifty pounds. I traded that for the opportunity to trim Satan&#8217;s pubic hair while he dines out of my open skull so a few bits of the internet will continue to work for a few more days.</p><p><br/></p><p>(Update: now available in <a href="https://blog.meglis.com/dyskola-epangelmata-programmatismos/">Greek</a>, <a href="http://borisovo.cz/programming-sucks-cz.html">Czech</a>, <a href="http://valeriopierbattista.com/blog/programmare-fa-schifo/">Italian</a>, <a href="https://www.minds.com/blog/view/1321452124919304199">Russian</a>, <a href="https://medium.com/p/e5135c4df608">Portuguese</a>, <a href="http://programozniszivas.blogspot.com/">Hungarian</a>, <a href="http://alexisbrenon.github.io/blog/technique/2015/04/21/Programming_sucks.html">French</a>, <a href="/programming-sucks.pdf">Hebrew (PDF by Ilil Hoz)</a>, <a href="/programming-sucks-german.pdf">German (PDF by Kurt Frock)</a>, <a href="http://www.nociones.de/programar-es-un-asco/">Spanish</a>, and <a href="http://blog.jobbole.com/91919/">Chinese</a>)</p><p><br/></p></div><div id="footnotes"><p id="fp1"><a class="numeral" href="#return1" id="footnote1">1</a> It always starts with &#8220;Bro&#8221;</p></div>
</div>
</div>
<input type='hidden' value='139' id='blogid' /> <p class='pip' title="Sit like an Egyptian." style='background-position:-75px -450px '>Sit like an Egyptian.</p><div>
<div id="audio-download">
<p class="note">
Download the audio, read by <a href="http://www.kendrasvoice.com/">Kendra Hoffman</a>:
<span class="audio-icons">
<a href="https://itunes.apple.com/us/album/programming-sucks-ep/id1088470465">
<img
src="/img/audio/itunes.png"
alt="Download from itunes"
title="Download from itunes"
/>
</a>
<a href="https://www.amazon.com/gp/product/B01CB5YCKU">
<img
src="/img/audio/amazon.png"
alt="Download from amazon"
title="Download from amazon"
/>
</a>
<a href="http://www.cdbaby.com/cd/peterwelch">
<img
src="/img/audio/cdbaby.png"
alt="Download from cdbaby"
title="Download from cdbaby"
/>
</a>
<a href="https://play.google.com/store/music/album?id=Btbxmmfbwuqdirlkp3nuszia4du&tid=song-T6xtsnkxw3pxjtfurnatma4v4nu&hl=en">
<img
src="/img/audio/google.png"
alt="Download from google"
title="Download from google"
/>
</a>
</span>
</p>
</div>
<!--
<div id="shamelessplug" style="border-bottom: 1px solid #ccc; margin-bottom: 20px;">
Hi there! You should totally go <a onclick='ga("send", "event", "Books", "click", "Noware, bottom")' href="http://geni.us/noware">buy my book for the
low low price of 6.73!</a> It's like buying me a beer at an
out-of-the-way dive bar in Brooklyn! Not in Manhattan.
Manhattan prices are ridiculous, though there are a
couple of decent Irish dives where you can snag a drink
for five bucks. Otherwise, you're looking at a two or
three book beer.
</div>
-->
<br/>
<bookshelf>
<div style="font-size: 20px; margin: 40px 100px; text-align: center">If you don't like giving money to Amazon or Lulu, please feel free to make a suitable donation and <a href="/contact.php">contact me directly</a> for an ePub or PDF of any book.</div>
<books>
<a class="book" href="https://www.amazon.com/Shameless-Cash-Grab-Peter-Welch/dp/1734753315/">
<img src="../img/bookshelf/shameless-ad.png" />
<teaser>
<h3>Shameless Cash Grab</h3>
<p>* The meticulously over-annotated reprinting of things you can get for free on the internet, but run through spell check. Also the book with Programming Sucks. Mostly by Peter Hunt Welch, except where I quoted somebody or flat out stole a line from a friend once I was sure they didn't remember saying it. Also it turned out to be mostly about COVID-19.</p>
<span>Click to see on Amazon</span>
</teaser>
</a>
<a class="book" href="https://smile.amazon.com/City-Commute-Science-Tedious-Journey-ebook/dp/B08WKR59TJ/">
<img src="../img/bookshelf/stilldrinking-ad.png" />
<teaser>
<h3>The City Commute</h3>
<p>An investigation of the principles of commuting in one hundred meditations. Subjects include, but are not limited to, the implications of autonomy, the attitudes of whales, the perfidy of signage, and the optimal positioning of feet when approaching one's subway disembarkation.</p>
<span>Click to see on Amazon</span>
</teaser>
</a>
<a class="book" href="http://geni.us/noware">
<img src="../img/bookshelf/big-noware.png" />
<teaser>
<h3>Noware</h3>
<p>This is the story of a boy, a girl, a phone, a cat, the end of the universe, and the terrible power of ennui.</p>
<span>Click to see on Amazon</span>
</teaser>
</a>
<a class="book" href="http://geni.us/2WuF">
<img src="../img/bookshelf/big-atitiwaf.png" />
<teaser>
<h3>And Then I Thought I was a Fish</h3>
<p>IDENTIFYING INFORMATION: Peter Hunt Welch is a 20-year-old single Caucasian male who was residing in Bar Harbor, Maine this summer. He is a University of Maine at Orono student with no prior psychiatric history, who was admitted to the Acadia Hospital on an involuntary basis due to an acute level of confusion and disorganization, both behaviorally and cognitively. He was evaluated at MDI and was transferred from that facility due to psychosis, impulse thoughts, delusions, and disorientation.</p>
<span>Click to see on Amazon</span>
</teaser>
</a>
<a class="book" href="http://geni.us/WaG">
<img src="../img/bookshelf/big-ooaswm.png" />
<teaser>
<h3>Observations of a Straight White Male with No Interesting Fetishes</h3>
<p>Ever wondered how to justify your own righteousness even while you're constantly embarrassed by it? Or how to make a case for your own existence when you contribute nothing besides nominal labor to a faceless corporation that's probably exploiting children? Are you clinging desperately to an arbitrary social model imposed by your parents and childhood friends? Or screaming in terror, your mind unhinged at the prospect of an uncaring void racing to consume the very possibility of your life having meaning?</p>
<span>Click to see on Amazon</span>
</teaser>
</a>
</books>
</bookshelf>
</div>
</div>
<div id="foot">
<div id="social">
<div class='shareaholic-canvas' data-app='share_buttons' data-app-id='23671556'></div>
</div>
<div id="plug2">
<a href="https://www.patreon.com/stilldrinking">
<img src="../img/patreon.png" alt="Patreon" />
</a>
</div>
<div id="copy">&copy; Peter Welch 2019 All rights reserved.</div>
</div>
<div id="mobile-footnote">
<div class="content"></div>
<a id="close-note">&times;</a>
</div>
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
var _gscq = _gscq || [];
_gscq.push(['language', navigator.language]);
(function() {
var gscw = document.createElement('script');
gscw.type = 'text/javascript'; gscw.async = true;
gscw.src = '//widgets.getsitecontrol.com/13610/script.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gscw, s);
})();
</script>
</body>
</html>