- Remove site-nav--dark class from all pages (blog, homepage) - Add nav color overrides to all blog pages (light background, dark text) - Homepage: hover screenshots to swap dark/light, click to expand both side by side in overlay Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
456 lines
17 KiB
HTML
456 lines
17 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Why I'm Not Posting This on Reddit — The Other Dude Blog</title>
|
|
<meta name="description" content="I built something and I'm not posting it on Reddit, Hacker News, or anywhere else that runs on upvotes. Here's why building in public on forums is a trap.">
|
|
<meta name="keywords" content="building in public, developer feedback, software development, Reddit, Hacker News, open source, indie software">
|
|
<meta name="author" content="The Other Dude">
|
|
<meta name="robots" content="index, follow">
|
|
<meta name="theme-color" content="#eae7de">
|
|
<link rel="canonical" href="https://theotherdude.net/blog/not-posting-on-reddit.html">
|
|
<link rel="icon" href="../data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><rect x='2' y='2' width='60' height='60' rx='8' fill='none' stroke='%238B1A1A' stroke-width='2'/><path d='M32 18 L46 32 L32 46 L18 32 Z' fill='%238B1A1A'/><path d='M32 19 L38 32 L32 45 L26 32 Z' fill='%232A9D8F'/><circle cx='32' cy='32' r='5' fill='%238B1A1A'/><circle cx='32' cy='32' r='2.5' fill='%232A9D8F'/></svg>">
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:type" content="article">
|
|
<meta property="og:title" content="Why I'm Not Posting This on Reddit — The Other Dude">
|
|
<meta property="og:description" content="I built something and I'm not posting it on Reddit, Hacker News, or anywhere else that runs on upvotes. Here's why building in public on forums is a trap.">
|
|
<meta property="og:url" content="https://theotherdude.net/blog/not-posting-on-reddit.html">
|
|
<meta property="og:site_name" content="The Other Dude">
|
|
<meta property="article:published_time" content="2026-03-19">
|
|
|
|
<!-- Structured Data -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "BlogPosting",
|
|
"headline": "Why I'm Not Posting This on Reddit",
|
|
"description": "I built something and I'm not posting it on Reddit, Hacker News, or anywhere else that runs on upvotes. Here's why building in public on forums is a trap.",
|
|
"datePublished": "2026-03-19",
|
|
"author": {
|
|
"@type": "Organization",
|
|
"name": "The Other Dude"
|
|
},
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "The Other Dude",
|
|
"url": "https://theotherdude.net"
|
|
},
|
|
"mainEntityOfPage": "https://theotherdude.net/blog/not-posting-on-reddit.html"
|
|
}
|
|
</script>
|
|
|
|
<!-- Fonts -->
|
|
|
|
<link rel="stylesheet" href="../style.css?v=3">
|
|
<style>
|
|
/* Warm Precision overrides */
|
|
:root {
|
|
--background: #eae7de;
|
|
--surface: #f6f4ec;
|
|
--elevated: #f0ede4;
|
|
--border: rgba(40,36,28,0.12);
|
|
--text-primary: #1a1810;
|
|
--text-secondary: #5e5a4e;
|
|
--text-muted: #8a8578;
|
|
--accent: #8a7a48;
|
|
}
|
|
body { background-color: #eae7de; color: #1a1810; }
|
|
.site-nav { background: #e0dcd2 !important; border-bottom: 1px solid rgba(40,36,28,0.12); }
|
|
.site-nav .nav-logo span, .site-nav .nav-link, .site-nav .nav-cta { color: #1a1810 !important; }
|
|
.site-nav .nav-link:hover { color: #8a7a48 !important; }
|
|
.dark { /* prevent dark mode */ }
|
|
</style>
|
|
<style>
|
|
.blog-post {
|
|
max-width: 720px;
|
|
margin: 0 auto;
|
|
padding: 80px 24px 120px;
|
|
}
|
|
.blog-post-meta {
|
|
color: var(--text-muted);
|
|
font-size: 14px;
|
|
margin-bottom: 8px;
|
|
}
|
|
.blog-post h1 {
|
|
font-family: "Manrope", sans-serif;
|
|
font-weight: 700;
|
|
font-size: 2.5rem;
|
|
line-height: 1.2;
|
|
color: var(--text-primary);
|
|
margin-bottom: 40px;
|
|
}
|
|
.blog-post h2 {
|
|
font-family: "Manrope", sans-serif;
|
|
font-weight: 600;
|
|
font-size: 1.4rem;
|
|
color: var(--text-primary);
|
|
margin-top: 48px;
|
|
margin-bottom: 16px;
|
|
}
|
|
.blog-post p {
|
|
color: var(--text-secondary);
|
|
font-size: 1.05rem;
|
|
line-height: 1.75;
|
|
margin-bottom: 20px;
|
|
}
|
|
.blog-post p strong {
|
|
color: var(--text-primary);
|
|
}
|
|
.blog-post p em {
|
|
font-style: italic;
|
|
}
|
|
.blog-post a {
|
|
color: var(--accent);
|
|
text-decoration: underline;
|
|
text-underline-offset: 3px;
|
|
}
|
|
.blog-post a:hover {
|
|
color: var(--text-primary);
|
|
}
|
|
.blog-post .back-link {
|
|
display: inline-block;
|
|
margin-bottom: 32px;
|
|
font-size: 14px;
|
|
text-decoration: none;
|
|
color: var(--text-muted);
|
|
}
|
|
.blog-post .back-link:hover {
|
|
color: var(--accent);
|
|
}
|
|
.blog-post blockquote {
|
|
border-left: 3px solid var(--border);
|
|
margin: 24px 0;
|
|
padding: 4px 0 4px 20px;
|
|
}
|
|
.blog-post blockquote p {
|
|
color: var(--text-muted);
|
|
font-family: "IBM Plex Mono", monospace;
|
|
font-size: 0.95rem;
|
|
margin-bottom: 8px;
|
|
}
|
|
.blog-post blockquote p:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
.blog-post .blog-footer {
|
|
margin-top: 64px;
|
|
padding-top: 24px;
|
|
border-top: 1px solid var(--border);
|
|
font-size: 0.9rem;
|
|
color: var(--text-muted);
|
|
}
|
|
.blog-post .blog-footer a {
|
|
color: var(--text-secondary);
|
|
}
|
|
.blog-post .blog-cta {
|
|
margin-top: 48px;
|
|
padding-top: 32px;
|
|
border-top: 1px solid var(--border);
|
|
}
|
|
.blog-post .blog-cta p {
|
|
color: var(--text-primary);
|
|
}
|
|
.video-embed {
|
|
position: relative;
|
|
width: 100%;
|
|
max-width: 560px;
|
|
margin: 32px auto;
|
|
aspect-ratio: 16 / 9;
|
|
border-radius: 2px;
|
|
overflow: hidden;
|
|
background: #000;
|
|
cursor: pointer;
|
|
}
|
|
.video-embed iframe {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
border: 0;
|
|
}
|
|
.video-embed .video-placeholder {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: #111;
|
|
color: var(--text-secondary);
|
|
font-size: 0.9rem;
|
|
text-align: center;
|
|
gap: 12px;
|
|
}
|
|
.video-embed .video-placeholder .play-btn {
|
|
width: 64px;
|
|
height: 64px;
|
|
border-radius: 50%;
|
|
background: rgba(255,255,255,0.15);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: background 0.2s;
|
|
}
|
|
.video-embed:hover .play-btn {
|
|
background: rgba(255,255,255,0.25);
|
|
}
|
|
.video-embed .play-btn svg {
|
|
width: 28px;
|
|
height: 28px;
|
|
fill: #fff;
|
|
margin-left: 4px;
|
|
}
|
|
.video-embed .video-title {
|
|
font-family: "IBM Plex Mono", monospace;
|
|
font-size: 0.8rem;
|
|
color: var(--text-muted);
|
|
}
|
|
@media (max-width: 480px) {
|
|
.blog-post h1 { font-size: 1.8rem; }
|
|
.blog-post { padding: 60px 20px 80px; }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<nav class="site-nav">
|
|
<div class="nav-inner container">
|
|
<a href="../index.html" class="nav-logo">
|
|
<svg class="nav-logo-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="32" height="32" aria-label="The Other Dude logo">
|
|
<rect x="2" y="2" width="60" height="60" rx="8" fill="none" stroke="#8B1A1A" stroke-width="2"/>
|
|
<rect x="6" y="6" width="52" height="52" rx="5" fill="none" stroke="#F5E6C8" stroke-width="1.5"/>
|
|
<rect x="8" y="8" width="48" height="48" rx="4" fill="#8B1A1A" opacity="0.15"/>
|
|
<path d="M32 8 L56 32 L32 56 L8 32 Z" fill="none" stroke="#8B1A1A" stroke-width="2"/>
|
|
<path d="M32 13 L51 32 L32 51 L13 32 Z" fill="none" stroke="#F5E6C8" stroke-width="1.5"/>
|
|
<path d="M32 18 L46 32 L32 46 L18 32 Z" fill="#8B1A1A"/>
|
|
<path d="M32 19 L38 32 L32 45 L26 32 Z" fill="#2A9D8F"/>
|
|
<path d="M19 32 L32 26 L45 32 L32 38 Z" fill="#F5E6C8"/>
|
|
<circle cx="32" cy="32" r="5" fill="#8B1A1A"/>
|
|
<circle cx="32" cy="32" r="2.5" fill="#2A9D8F"/>
|
|
<path d="M10 10 L16 10 L10 16 Z" fill="#2A9D8F" opacity="0.7"/>
|
|
<path d="M54 10 L54 16 L48 10 Z" fill="#2A9D8F" opacity="0.7"/>
|
|
<path d="M10 54 L16 54 L10 48 Z" fill="#2A9D8F" opacity="0.7"/>
|
|
<path d="M54 54 L48 54 L54 48 Z" fill="#2A9D8F" opacity="0.7"/>
|
|
</svg>
|
|
<span>The Other Dude</span>
|
|
</a>
|
|
<div class="nav-links">
|
|
<a href="../docs.html" class="nav-link">Docs</a>
|
|
<a href="index.html" class="nav-link">Blog</a>
|
|
<a href="https://github.com/staack/the-other-dude" class="nav-link" rel="noopener">GitHub</a>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main>
|
|
<article class="blog-post">
|
|
<a href="index.html" class="back-link">← Back to Blog</a>
|
|
<div class="blog-post-meta">March 19, 2026</div>
|
|
<h1>Why I'm Not Posting This on Reddit</h1>
|
|
|
|
<p>I built something. And I'm not going to post it on Reddit, Hacker News, or anywhere else that runs on upvotes and drive-by opinions.</p>
|
|
|
|
<p>That's not an accident. That's the plan.</p>
|
|
|
|
<h2>I've Been Online Long Enough to Know Better</h2>
|
|
|
|
<p>I've been on the internet since the BBS days. Dialup. Bulletin boards. Forums where you had to earn a reputation before anyone cared what you thought.</p>
|
|
|
|
<p>Before feeds. Before algorithms. Before everything became a performance.</p>
|
|
|
|
<p>Back then, if you found something cool, it was because you were <em>looking for it</em>. Not because it was shoved in front of you between ads and arguments.</p>
|
|
|
|
<p>Somewhere along the way, the internet stopped being a place to build things and became a place to react to them. MC Frontalot said it better than I can:</p>
|
|
|
|
<div class="video-embed" id="video-embed" role="button" tabindex="0" aria-label="Play MC Frontalot — Internet Sucks on YouTube">
|
|
<div class="video-placeholder">
|
|
<div class="play-btn">
|
|
<svg viewBox="0 0 24 24"><polygon points="5,3 19,12 5,21"/></svg>
|
|
</div>
|
|
<span>MC Frontalot — Internet Sucks</span>
|
|
<span class="video-title">Click to play (opens YouTube)</span>
|
|
</div>
|
|
</div>
|
|
|
|
<h2>Forums Optimize for the Wrong Things</h2>
|
|
|
|
<p>Modern forums reward speed over thought, opinions over experience, and confidence over correctness.</p>
|
|
|
|
<p>You don't get real developer feedback. You get:</p>
|
|
|
|
<blockquote>
|
|
<p>“this already exists”</p>
|
|
<p>“why didn't you use X”</p>
|
|
<p>“I wouldn't do it that way”</p>
|
|
</blockquote>
|
|
|
|
<p>From people who haven't run it, haven't deployed it, and never will. That's not feedback. That's noise with a score next to it.</p>
|
|
|
|
<h2>Building in Public Is a Trap</h2>
|
|
|
|
<p>If you start building in public on those platforms, something shifts. You stop building the thing you set out to build and start building something that survives comment sections.</p>
|
|
|
|
<p>You add features to defend decisions. You over-explain simple choices. You drift toward whatever gets approval instead of whatever solves the problem.</p>
|
|
|
|
<p>That's how good software turns into bloated software. I'm not doing that.</p>
|
|
|
|
<h2>I Want Signal, Not Reactions</h2>
|
|
|
|
<p>The only feedback worth anything comes from people who actually use the thing, run into real problems, and come back after it matters.</p>
|
|
|
|
<p>That feedback looks like:</p>
|
|
|
|
<blockquote>
|
|
<p>“this broke under load”</p>
|
|
<p>“this workflow doesn't make sense after a week”</p>
|
|
<p>“this saved me time”</p>
|
|
</blockquote>
|
|
|
|
<p>That's signal. Everything else is commentary from the stands.</p>
|
|
|
|
<h2>Distribution Isn't the Problem</h2>
|
|
|
|
<p>There's this pressure in software development to “launch” everywhere immediately. Like if you don't hit Reddit or Hacker News in the first week, the project is dead.</p>
|
|
|
|
<p>That's not how any of this works.</p>
|
|
|
|
<p>Good software doesn't fail because it missed a forum post. It fails because it tries to be everything to everyone. I'd rather have five real users than five thousand people who scrolled past it.</p>
|
|
|
|
<h2>This Is Intentional</h2>
|
|
|
|
<p>I'm not avoiding forums because I'm afraid of criticism. I'm avoiding them because I know exactly what kind of feedback they produce — and it's not the kind that makes software better.</p>
|
|
|
|
<p>If you found this without a Reddit thread pointing you here, that's the point.</p>
|
|
|
|
<div class="blog-cta">
|
|
<p>If you're using it, or thinking about using it — tell me what actually happens.</p>
|
|
|
|
<p>That's the only signal I care about.</p>
|
|
</div>
|
|
|
|
<div class="blog-footer">
|
|
<p>Read more: <a href="why-this-exists.html">Why This Exists</a> · <a href="what-you-can-do-today.html">What You Can Do With It Today</a> · <a href="free-tier-cap.html">Free Is Now Capped at 250 Devices</a></p>
|
|
</div>
|
|
</article>
|
|
</main>
|
|
|
|
<footer class="site-footer">
|
|
<div class="footer-inner container">
|
|
<div class="footer-brand">
|
|
<span class="footer-logo">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="24" height="24" aria-hidden="true" style="vertical-align: middle; margin-right: 8px;">
|
|
<rect x="2" y="2" width="60" height="60" rx="8" fill="none" stroke="#8B1A1A" stroke-width="2"/>
|
|
<rect x="6" y="6" width="52" height="52" rx="5" fill="none" stroke="#F5E6C8" stroke-width="1.5"/>
|
|
<rect x="8" y="8" width="48" height="48" rx="4" fill="#8B1A1A" opacity="0.15"/>
|
|
<path d="M32 18 L46 32 L32 46 L18 32 Z" fill="#8B1A1A"/>
|
|
<path d="M32 19 L38 32 L32 45 L26 32 Z" fill="#2A9D8F"/>
|
|
<path d="M19 32 L32 26 L45 32 L32 38 Z" fill="#F5E6C8"/>
|
|
<circle cx="32" cy="32" r="5" fill="#8B1A1A"/>
|
|
<circle cx="32" cy="32" r="2.5" fill="#2A9D8F"/>
|
|
</svg>
|
|
The Other Dude
|
|
</span>
|
|
<span class="footer-copy">© 2026 The Other Dude. All rights reserved.</span>
|
|
</div>
|
|
<nav class="footer-links">
|
|
<a href="../docs.html">Docs</a>
|
|
<a href="index.html">Blog</a>
|
|
<a href="https://github.com/staack/the-other-dude" rel="noopener">GitHub</a>
|
|
<a href="mailto:license@theotherdude.net">Licensing</a>
|
|
</nav>
|
|
<p style="margin-top:12px;font-size:0.75em;color:#8a8578;text-align:center;">This site uses self-hosted, cookie-free analytics to measure page views and engagement. No personal data is collected or shared with third parties.</p>
|
|
</div>
|
|
</footer>
|
|
|
|
<script>
|
|
(function() {
|
|
var h = 'https://telemetry.theotherdude.net';
|
|
var p = location.pathname;
|
|
var t = document.title;
|
|
var r = document.referrer;
|
|
|
|
// Session page count via sessionStorage.
|
|
var sc = parseInt(sessionStorage.getItem('_tc_sc') || '0', 10) + 1;
|
|
sessionStorage.setItem('_tc_sc', sc);
|
|
|
|
// UTM params.
|
|
var sp = new URLSearchParams(location.search);
|
|
var us = sp.get('utm_source') || '';
|
|
var um = sp.get('utm_medium') || '';
|
|
var uc = sp.get('utm_campaign') || '';
|
|
|
|
// Pixel URL with all params.
|
|
var params = new URLSearchParams({
|
|
p: p, t: t, r: r,
|
|
sw: screen.width, sh: screen.height,
|
|
vw: innerWidth, vh: innerHeight,
|
|
tz: new Date().getTimezoneOffset(),
|
|
dpr: devicePixelRatio || 1,
|
|
touch: navigator.maxTouchPoints > 0 ? 1 : 0,
|
|
cd: screen.colorDepth,
|
|
plt: Math.round(performance.now()),
|
|
sc: sc
|
|
});
|
|
if (us) params.set('us', us);
|
|
if (um) params.set('um', um);
|
|
if (uc) params.set('uc', uc);
|
|
|
|
var ct = navigator.connection ? navigator.connection.effectiveType : '';
|
|
if (ct) params.set('ct', ct);
|
|
|
|
new Image().src = h + '/px?' + params.toString();
|
|
|
|
// Engagement tracking.
|
|
var startTime = performance.now();
|
|
var maxScroll = 0;
|
|
|
|
function getScrollDepth() {
|
|
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
|
var docHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
|
|
var winHeight = innerHeight;
|
|
if (docHeight <= winHeight) return 100;
|
|
var pct = Math.round((scrollTop + winHeight) / docHeight * 100);
|
|
return Math.min(pct, 100);
|
|
}
|
|
|
|
window.addEventListener('scroll', function() {
|
|
var d = getScrollDepth();
|
|
if (d > maxScroll) maxScroll = d;
|
|
}, {passive: true});
|
|
|
|
// Send beacon on page hide.
|
|
function sendBeacon() {
|
|
var top = Math.round(performance.now() - startTime);
|
|
var data = new URLSearchParams({p: p, top: top, sd: maxScroll});
|
|
navigator.sendBeacon(h + '/px/beacon', data);
|
|
}
|
|
|
|
document.addEventListener('visibilitychange', function() {
|
|
if (document.visibilityState === 'hidden') sendBeacon();
|
|
});
|
|
window.addEventListener('pagehide', sendBeacon);
|
|
})();
|
|
|
|
// Click-to-play YouTube embed — no third-party requests until user clicks
|
|
var embed = document.getElementById('video-embed');
|
|
if (embed) {
|
|
function loadVideo() {
|
|
embed.innerHTML = '<iframe src="https://www.youtube.com/embed/m7QEWz-72bw?autoplay=1" allow="autoplay; encrypted-media" allowfullscreen loading="lazy" title="MC Frontalot — Internet Sucks"></iframe>';
|
|
embed.style.cursor = 'default';
|
|
embed.removeAttribute('role');
|
|
embed.removeAttribute('tabindex');
|
|
}
|
|
embed.addEventListener('click', loadVideo);
|
|
embed.addEventListener('keydown', function(e) {
|
|
if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); loadVideo(); }
|
|
});
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|