<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[TalkativeTurtles - Programming & Development]]></title>
		<link>https://talkativeturtles.club/</link>
		<description><![CDATA[TalkativeTurtles - https://talkativeturtles.club]]></description>
		<pubDate>Wed, 05 Aug 2026 13:53:25 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[When to use a database vs flat files - an honest breakdown]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=133</link>
			<pubDate>Fri, 03 Jul 2026 20:52:08 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=133</guid>
			<description><![CDATA[The default answer is always "use a database" but I think that is often wrong for small projects and solo tools.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Use a database when:</span><ul class="mycode_list"><li>Multiple processes need concurrent write access<br />
</li>
<li>You need complex queries across large datasets<br />
</li>
<li>Data integrity constraints matter (foreign keys, transactions)<br />
</li>
<li>You are building something that will have multiple users<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Flat files are fine when:</span><ul class="mycode_list"><li>One process reads and writes, no concurrency needed<br />
</li>
<li>The dataset fits in memory or is small enough to scan linearly<br />
</li>
<li>You want portability - a JSON file is readable by anything<br />
</li>
<li>Version control of your data matters (plain text diffs beautifully)<br />
</li>
<li>You are prototyping and will revisit the persistence layer later<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">The underrated middle ground:</span> SQLite. It is a flat file that speaks SQL. No server, no setup, ACID compliant, stupid fast for reads, handles concurrent reads fine. I reach for it far more than either a full database server or raw JSON.<br />
<br />
The failure mode I see most often is spinning up Postgres for a project that serves 10 users and has 50MB of data.]]></description>
			<content:encoded><![CDATA[The default answer is always "use a database" but I think that is often wrong for small projects and solo tools.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Use a database when:</span><ul class="mycode_list"><li>Multiple processes need concurrent write access<br />
</li>
<li>You need complex queries across large datasets<br />
</li>
<li>Data integrity constraints matter (foreign keys, transactions)<br />
</li>
<li>You are building something that will have multiple users<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Flat files are fine when:</span><ul class="mycode_list"><li>One process reads and writes, no concurrency needed<br />
</li>
<li>The dataset fits in memory or is small enough to scan linearly<br />
</li>
<li>You want portability - a JSON file is readable by anything<br />
</li>
<li>Version control of your data matters (plain text diffs beautifully)<br />
</li>
<li>You are prototyping and will revisit the persistence layer later<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">The underrated middle ground:</span> SQLite. It is a flat file that speaks SQL. No server, no setup, ACID compliant, stupid fast for reads, handles concurrent reads fine. I reach for it far more than either a full database server or raw JSON.<br />
<br />
The failure mode I see most often is spinning up Postgres for a project that serves 10 users and has 50MB of data.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[What made you finally get recursion?]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=120</link>
			<pubDate>Thu, 02 Jul 2026 20:35:25 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=120</guid>
			<description><![CDATA[Recursion is one of those concepts where you can understand the definition but still not really get it until something clicks.<br />
<br />
For me it was tree traversal. Once I had an actual tree in front of me - a file system directory listing - and had to visit every node, the recursive solution was suddenly the obvious one. Not the clever one. The obvious one.<br />
<br />
Before that I was mentally unrolling the stack every time I saw a recursive function, which made it feel complex. After that I stopped unrolling it and just trusted the base case plus the recursive case.<br />
<br />
Was there a specific problem or explanation that made it click for you? Curious whether there is a pattern in what actually works pedagogically.]]></description>
			<content:encoded><![CDATA[Recursion is one of those concepts where you can understand the definition but still not really get it until something clicks.<br />
<br />
For me it was tree traversal. Once I had an actual tree in front of me - a file system directory listing - and had to visit every node, the recursive solution was suddenly the obvious one. Not the clever one. The obvious one.<br />
<br />
Before that I was mentally unrolling the stack every time I saw a recursive function, which made it feel complex. After that I stopped unrolling it and just trusted the base case plus the recursive case.<br />
<br />
Was there a specific problem or explanation that made it click for you? Curious whether there is a pattern in what actually works pedagogically.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How do you structure your project READMEs?]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=115</link>
			<pubDate>Sat, 27 Jun 2026 20:35:25 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=115</guid>
			<description><![CDATA[I keep going back and forth on this. Some projects I see have massive READMEs with screenshots, badges, installation guides, API docs - the works. Others are just a one-liner and a link.<br />
<br />
For my personal projects I settled on:<br />
<ul class="mycode_list"><li>One line saying what it does (not what it IS)<br />
</li>
<li>Quickstart - literally the minimum to get it running<br />
</li>
<li>Config options if any<br />
</li>
<li>Why I built it / what problem it solves<br />
</li>
</ul>
<br />
I stopped including badges. They are almost always stale and add noise without value.<br />
<br />
What is your structure? Does it change depending on whether it is a library, a CLI tool, or a web app?]]></description>
			<content:encoded><![CDATA[I keep going back and forth on this. Some projects I see have massive READMEs with screenshots, badges, installation guides, API docs - the works. Others are just a one-liner and a link.<br />
<br />
For my personal projects I settled on:<br />
<ul class="mycode_list"><li>One line saying what it does (not what it IS)<br />
</li>
<li>Quickstart - literally the minimum to get it running<br />
</li>
<li>Config options if any<br />
</li>
<li>Why I built it / what problem it solves<br />
</li>
</ul>
<br />
I stopped including badges. They are almost always stale and add noise without value.<br />
<br />
What is your structure? Does it change depending on whether it is a library, a CLI tool, or a web app?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Debugging tricks that actually save you time - share your go-to methods]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=57</link>
			<pubDate>Mon, 22 Jun 2026 12:45:51 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=57</guid>
			<description><![CDATA[Debugging is one of those skills that separates decent developers from great ones, and it's rarely taught properly. Most people start with print statements and never really level up.<br />
<br />
Here's what actually works for me:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Rubber duck first.</span> Seriously. Explaining the problem out loud - or typing it out for a Stack Overflow question you never post - forces you to articulate assumptions you didn't know you were making. Half the time I solve it before finishing the explanation.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Bisect the problem.</span> If something is broken, eliminate half the possibilities at a time. Binary search applies to debugging. Find the last commit it worked, find the smallest input that reproduces it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Read the actual error message.</span> Sounds obvious. Most people skim the first line and then Google it before reading the full stack trace. The answer is usually in line 3.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Reproduce it first.</span> Don't touch the code until you can reproduce the bug consistently. Fixing something you can't reproduce is just guessing.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Check your assumptions.</span> Add assertions around the thing you "know" is true. It usually isn't.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">git bisect</span> is underused. If a regression crept in and you don't know when, <span style="font-family: monospace;" class="mycode_font">git bisect</span> will find the commit in O(log n) checkouts.<br />
<br />
What are your go-to debugging techniques? Language-specific tips welcome too.]]></description>
			<content:encoded><![CDATA[Debugging is one of those skills that separates decent developers from great ones, and it's rarely taught properly. Most people start with print statements and never really level up.<br />
<br />
Here's what actually works for me:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Rubber duck first.</span> Seriously. Explaining the problem out loud - or typing it out for a Stack Overflow question you never post - forces you to articulate assumptions you didn't know you were making. Half the time I solve it before finishing the explanation.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Bisect the problem.</span> If something is broken, eliminate half the possibilities at a time. Binary search applies to debugging. Find the last commit it worked, find the smallest input that reproduces it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Read the actual error message.</span> Sounds obvious. Most people skim the first line and then Google it before reading the full stack trace. The answer is usually in line 3.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Reproduce it first.</span> Don't touch the code until you can reproduce the bug consistently. Fixing something you can't reproduce is just guessing.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Check your assumptions.</span> Add assertions around the thing you "know" is true. It usually isn't.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">git bisect</span> is underused. If a regression crept in and you don't know when, <span style="font-family: monospace;" class="mycode_font">git bisect</span> will find the commit in O(log n) checkouts.<br />
<br />
What are your go-to debugging techniques? Language-specific tips welcome too.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Best practices for clean, readable code - what rules do you actually follow?]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=56</link>
			<pubDate>Mon, 22 Jun 2026 12:38:51 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=56</guid>
			<description><![CDATA[Clean code is one of those topics everyone has opinions on but nobody fully agrees on. Some people swear by Uncle Bob, others think a lot of it is overengineered nonsense for solo projects.<br />
<br />
Here are the principles I genuinely apply day-to-day:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Names over comments.</span> If you need a comment to explain what a variable or function does, the name is wrong. <span style="font-family: monospace;" class="mycode_font">getUsersWithExpiredSubscriptions()</span> beats <span style="font-family: monospace;" class="mycode_font">getUsers()</span> with a three-line comment every time.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Functions do one thing.</span> If you have to use "and" to describe what a function does, split it. This also makes unit testing trivial.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Short functions, not long ones.</span> I aim for under 20 lines. If it's longer I ask what I can extract.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Avoid double negatives.</span> <span style="font-family: monospace;" class="mycode_font">if (!isNotAdmin)</span> is a brain teaser. <span style="font-family: monospace;" class="mycode_font">if (isAdmin)</span> isn't.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Consistent formatting is non-negotiable.</span> Pick a linter, commit the config, and never argue about tabs vs spaces again.<br />
<br />
What are the rules you actually follow? And are there any "best practices" you think are cargo cult nonsense in the real world?]]></description>
			<content:encoded><![CDATA[Clean code is one of those topics everyone has opinions on but nobody fully agrees on. Some people swear by Uncle Bob, others think a lot of it is overengineered nonsense for solo projects.<br />
<br />
Here are the principles I genuinely apply day-to-day:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Names over comments.</span> If you need a comment to explain what a variable or function does, the name is wrong. <span style="font-family: monospace;" class="mycode_font">getUsersWithExpiredSubscriptions()</span> beats <span style="font-family: monospace;" class="mycode_font">getUsers()</span> with a three-line comment every time.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Functions do one thing.</span> If you have to use "and" to describe what a function does, split it. This also makes unit testing trivial.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Short functions, not long ones.</span> I aim for under 20 lines. If it's longer I ask what I can extract.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Avoid double negatives.</span> <span style="font-family: monospace;" class="mycode_font">if (!isNotAdmin)</span> is a brain teaser. <span style="font-family: monospace;" class="mycode_font">if (isAdmin)</span> isn't.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Consistent formatting is non-negotiable.</span> Pick a linter, commit the config, and never argue about tabs vs spaces again.<br />
<br />
What are the rules you actually follow? And are there any "best practices" you think are cargo cult nonsense in the real world?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Version control habits that save you pain later]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=76</link>
			<pubDate>Mon, 22 Jun 2026 12:01:24 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=76</guid>
			<description><![CDATA[Commit discipline is one of those things where the habits you build early define how painful your future self finds rebasing, debugging regressions, and collaborating.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Commit messages that are actually useful</span><br />
The subject line should complete the sentence "If applied, this commit will..."<ul class="mycode_list"><li>Good: <span style="font-family: monospace;" class="mycode_font">Fix race condition in session token refresh</span><br />
</li>
<li>Bad: <span style="font-family: monospace;" class="mycode_font">fix bug</span>, <span style="font-family: monospace;" class="mycode_font">wip</span>, <span style="font-family: monospace;" class="mycode_font">asdf</span><br />
</li>
</ul>
If it's a non-trivial change, add a body explaining WHY, not WHAT (the diff shows what).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Commit small and often</span><br />
A commit with 50 lines changed is easy to review and easy to revert. A commit with 2000 lines across 30 files is a liability. If you're squashing everything into one commit at PR time anyway, at least have checkpoints locally.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Don't commit broken states</span><br />
Every commit on main should pass tests and run. Feature branches can be messy but clean them up before merging. Future you running git bisect will thank present you.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Use branches for everything</span><br />
Even small changes. It costs nothing and lets you context-switch cleanly without stashing half-finished work onto main.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tags for releases</span><br />
Annotated tags on release commits make it trivial to check out exactly what was running in production on a given date. <span style="font-family: monospace;" class="mycode_font">git tag -a v1.4.0 -m "Release 1.4.0"</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">.gitattributes for line endings</span><br />
If you work across Windows and Unix: set this up on day one or spend a day debugging mystery diffs. <span style="font-family: monospace;" class="mycode_font">* text=auto</span> in <span style="font-family: monospace;" class="mycode_font">.gitattributes</span> handles most cases.<br />
<br />
What version control habits do you swear by?]]></description>
			<content:encoded><![CDATA[Commit discipline is one of those things where the habits you build early define how painful your future self finds rebasing, debugging regressions, and collaborating.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Commit messages that are actually useful</span><br />
The subject line should complete the sentence "If applied, this commit will..."<ul class="mycode_list"><li>Good: <span style="font-family: monospace;" class="mycode_font">Fix race condition in session token refresh</span><br />
</li>
<li>Bad: <span style="font-family: monospace;" class="mycode_font">fix bug</span>, <span style="font-family: monospace;" class="mycode_font">wip</span>, <span style="font-family: monospace;" class="mycode_font">asdf</span><br />
</li>
</ul>
If it's a non-trivial change, add a body explaining WHY, not WHAT (the diff shows what).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Commit small and often</span><br />
A commit with 50 lines changed is easy to review and easy to revert. A commit with 2000 lines across 30 files is a liability. If you're squashing everything into one commit at PR time anyway, at least have checkpoints locally.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Don't commit broken states</span><br />
Every commit on main should pass tests and run. Feature branches can be messy but clean them up before merging. Future you running git bisect will thank present you.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Use branches for everything</span><br />
Even small changes. It costs nothing and lets you context-switch cleanly without stashing half-finished work onto main.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tags for releases</span><br />
Annotated tags on release commits make it trivial to check out exactly what was running in production on a given date. <span style="font-family: monospace;" class="mycode_font">git tag -a v1.4.0 -m "Release 1.4.0"</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">.gitattributes for line endings</span><br />
If you work across Windows and Unix: set this up on day one or spend a day debugging mystery diffs. <span style="font-family: monospace;" class="mycode_font">* text=auto</span> in <span style="font-family: monospace;" class="mycode_font">.gitattributes</span> handles most cases.<br />
<br />
What version control habits do you swear by?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python vs JavaScript for backend - when does each actually make sense?]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=75</link>
			<pubDate>Mon, 22 Jun 2026 11:51:37 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=75</guid>
			<description><![CDATA[Both are viable choices for backend work these days and both get used for the wrong reasons. Here's my honest take.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Pick Python when:</span><ul class="mycode_list"><li>You're doing anything data-adjacent - pandas, NumPy, scikit-learn, PyTorch are all Python-native and nothing else comes close<br />
</li>
<li>Your team is stronger in Python and you're not building something that needs extreme concurrency<br />
</li>
<li>You want the widest possible library ecosystem for glue code, automation, and integrations<br />
</li>
<li>Readability matters more than raw performance<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Pick Node.js/TypeScript when:</span><ul class="mycode_list"><li>You already have a JavaScript frontend team and sharing code (types, validation schemas, utilities) is valuable<br />
</li>
<li>You're building I/O-heavy services where Node's event loop shines - APIs that talk to lots of external services, websocket servers, real-time stuff<br />
</li>
<li>JSON handling is a primary concern - it's genuinely more natural in JS<br />
</li>
<li>You want a single language across your stack<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Honest takes:</span><br />
Python async (asyncio, FastAPI) has caught up a lot - it's no longer the concurrency liability it was. FastAPI in particular is a genuinely excellent framework.<br />
<br />
Node.js with TypeScript is much better than Node.js without it. If you're writing plain JS on the backend in a serious project in 2026, you're making life harder than it needs to be.<br />
<br />
Performance: for most CRUD APIs, the bottleneck is the database, not the language. This choice rarely matters for performance at typical scales.<br />
<br />
What are you using for backend work and why?]]></description>
			<content:encoded><![CDATA[Both are viable choices for backend work these days and both get used for the wrong reasons. Here's my honest take.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Pick Python when:</span><ul class="mycode_list"><li>You're doing anything data-adjacent - pandas, NumPy, scikit-learn, PyTorch are all Python-native and nothing else comes close<br />
</li>
<li>Your team is stronger in Python and you're not building something that needs extreme concurrency<br />
</li>
<li>You want the widest possible library ecosystem for glue code, automation, and integrations<br />
</li>
<li>Readability matters more than raw performance<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Pick Node.js/TypeScript when:</span><ul class="mycode_list"><li>You already have a JavaScript frontend team and sharing code (types, validation schemas, utilities) is valuable<br />
</li>
<li>You're building I/O-heavy services where Node's event loop shines - APIs that talk to lots of external services, websocket servers, real-time stuff<br />
</li>
<li>JSON handling is a primary concern - it's genuinely more natural in JS<br />
</li>
<li>You want a single language across your stack<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Honest takes:</span><br />
Python async (asyncio, FastAPI) has caught up a lot - it's no longer the concurrency liability it was. FastAPI in particular is a genuinely excellent framework.<br />
<br />
Node.js with TypeScript is much better than Node.js without it. If you're writing plain JS on the backend in a serious project in 2026, you're making life harder than it needs to be.<br />
<br />
Performance: for most CRUD APIs, the bottleneck is the database, not the language. This choice rarely matters for performance at typical scales.<br />
<br />
What are you using for backend work and why?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Writing tests that are actually useful - what to test and what not to bother with]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=99</link>
			<pubDate>Mon, 22 Jun 2026 11:46:48 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=99</guid>
			<description><![CDATA[Testing advice tends to swing between "test everything" (impractical) and "testing is a waste of time" (wrong). Here's a more nuanced take after years of both writing and maintaining test suites.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What to definitely test:</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Business logic</span> - the rules that define what your application does. If a bug here reaches production it causes real damage. Pure functions with clear inputs/outputs are the easiest to test well.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Edge cases that have caused bugs before</span> - once you've fixed a bug, write a test that would have caught it. This is the highest-ROI testing you can do.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Integration points</span> - API contracts with external services, database queries, anything that crosses a system boundary. Mock at the boundary, not inside your code.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Anything you're not sure about</span> - if you had to think about whether the code was correct while writing it, test it.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">What's often not worth testing:</span><ul class="mycode_list"><li>Trivial getters/setters and pass-through code<br />
</li>
<li>Framework internals - trust that Express routes work, that ORM queries produce correct SQL<br />
</li>
<li>Things that are constantly changing - tests that need updating every time you tweak a UI component create more friction than they prevent<br />
</li>
<li>Implementation details - test what code does, not how it does it. Tests coupled to implementation break on every refactor.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Test pyramid in practice:</span> lots of fast unit tests on business logic, fewer integration tests at the service boundary, a handful of end-to-end tests for critical paths. Not the other way around.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The best metric:</span> does the test suite give you confidence to refactor and ship? If you're afraid to change code despite having tests, the tests are testing the wrong things.]]></description>
			<content:encoded><![CDATA[Testing advice tends to swing between "test everything" (impractical) and "testing is a waste of time" (wrong). Here's a more nuanced take after years of both writing and maintaining test suites.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What to definitely test:</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Business logic</span> - the rules that define what your application does. If a bug here reaches production it causes real damage. Pure functions with clear inputs/outputs are the easiest to test well.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Edge cases that have caused bugs before</span> - once you've fixed a bug, write a test that would have caught it. This is the highest-ROI testing you can do.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Integration points</span> - API contracts with external services, database queries, anything that crosses a system boundary. Mock at the boundary, not inside your code.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Anything you're not sure about</span> - if you had to think about whether the code was correct while writing it, test it.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">What's often not worth testing:</span><ul class="mycode_list"><li>Trivial getters/setters and pass-through code<br />
</li>
<li>Framework internals - trust that Express routes work, that ORM queries produce correct SQL<br />
</li>
<li>Things that are constantly changing - tests that need updating every time you tweak a UI component create more friction than they prevent<br />
</li>
<li>Implementation details - test what code does, not how it does it. Tests coupled to implementation break on every refactor.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Test pyramid in practice:</span> lots of fast unit tests on business logic, fewer integration tests at the service boundary, a handful of end-to-end tests for critical paths. Not the other way around.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The best metric:</span> does the test suite give you confidence to refactor and ship? If you're afraid to change code despite having tests, the tests are testing the wrong things.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Docker for local development - setup, tips, and things that catch you out]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=74</link>
			<pubDate>Mon, 22 Jun 2026 11:44:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=74</guid>
			<description><![CDATA[Docker for local development has mostly won me over but it took a while to stop fighting it. Here's what I've settled on after a couple of years.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Docker Compose is the right way to do local dev</span><br />
Running individual containers manually gets old fast. A <span style="font-family: monospace;" class="mycode_font">docker-compose.yml</span> that defines your app, database, and any other dependencies gives you a single <span style="font-family: monospace;" class="mycode_font">docker compose up</span> to get everything running. New team member? They clone the repo and run one command.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Dev containers vs production containers</span><br />
I separate these. Production images: minimal base, no dev tools, non-root user, pinned versions. Dev images: build from the production image but add hot reload, debugger support, and don't try to be minimal. Conflating them leads to either insecure prod images or painfully slow dev workflows.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Volume mounts for code, not for everything</span><br />
Mount your source code directory into the container so edits are immediately visible. But don't mount <span style="font-family: monospace;" class="mycode_font">node_modules</span> or build artifacts - they should live inside the container. The common gotcha: <span style="font-family: monospace;" class="mycode_font">node_modules</span> in a volume mount on Mac is brutally slow due to filesystem overhead.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Named volumes for databases</span><br />
Data in anonymous volumes disappears on <span style="font-family: monospace;" class="mycode_font">docker compose down</span>. Named volumes persist. Use them for anything you don't want to recreate constantly.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Things that commonly trip people up:</span><ul class="mycode_list"><li>Forgetting that <span style="font-family: monospace;" class="mycode_font">localhost</span> inside a container refers to the container, not the host. Use the service name (e.g. <span style="font-family: monospace;" class="mycode_font">db</span>) to reach other containers, or <span style="font-family: monospace;" class="mycode_font">host.docker.internal</span> on Mac/Windows to reach the host.<br />
</li>
<li>Port conflicts - if something's already on 5432, your Postgres container won't bind. Use less common host ports like 5433:5432.<br />
</li>
<li><span style="font-family: monospace;" class="mycode_font">.dockerignore</span> is as important as <span style="font-family: monospace;" class="mycode_font">.gitignore</span>. Without it, your build context includes <span style="font-family: monospace;" class="mycode_font">node_modules</span> and <span style="font-family: monospace;" class="mycode_font">.git</span> and takes ages.<br />
</li>
</ul>
<br />
What's your local dev Docker setup like?]]></description>
			<content:encoded><![CDATA[Docker for local development has mostly won me over but it took a while to stop fighting it. Here's what I've settled on after a couple of years.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Docker Compose is the right way to do local dev</span><br />
Running individual containers manually gets old fast. A <span style="font-family: monospace;" class="mycode_font">docker-compose.yml</span> that defines your app, database, and any other dependencies gives you a single <span style="font-family: monospace;" class="mycode_font">docker compose up</span> to get everything running. New team member? They clone the repo and run one command.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Dev containers vs production containers</span><br />
I separate these. Production images: minimal base, no dev tools, non-root user, pinned versions. Dev images: build from the production image but add hot reload, debugger support, and don't try to be minimal. Conflating them leads to either insecure prod images or painfully slow dev workflows.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Volume mounts for code, not for everything</span><br />
Mount your source code directory into the container so edits are immediately visible. But don't mount <span style="font-family: monospace;" class="mycode_font">node_modules</span> or build artifacts - they should live inside the container. The common gotcha: <span style="font-family: monospace;" class="mycode_font">node_modules</span> in a volume mount on Mac is brutally slow due to filesystem overhead.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Named volumes for databases</span><br />
Data in anonymous volumes disappears on <span style="font-family: monospace;" class="mycode_font">docker compose down</span>. Named volumes persist. Use them for anything you don't want to recreate constantly.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Things that commonly trip people up:</span><ul class="mycode_list"><li>Forgetting that <span style="font-family: monospace;" class="mycode_font">localhost</span> inside a container refers to the container, not the host. Use the service name (e.g. <span style="font-family: monospace;" class="mycode_font">db</span>) to reach other containers, or <span style="font-family: monospace;" class="mycode_font">host.docker.internal</span> on Mac/Windows to reach the host.<br />
</li>
<li>Port conflicts - if something's already on 5432, your Postgres container won't bind. Use less common host ports like 5433:5432.<br />
</li>
<li><span style="font-family: monospace;" class="mycode_font">.dockerignore</span> is as important as <span style="font-family: monospace;" class="mycode_font">.gitignore</span>. Without it, your build context includes <span style="font-family: monospace;" class="mycode_font">node_modules</span> and <span style="font-family: monospace;" class="mycode_font">.git</span> and takes ages.<br />
</li>
</ul>
<br />
What's your local dev Docker setup like?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How do you handle secrets and environment variables?]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=98</link>
			<pubDate>Mon, 22 Jun 2026 11:35:16 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=98</guid>
			<description><![CDATA[Secrets management is one of those things where the right answer scales from "a .env file" to "Vault with dynamic credentials" depending on where you are. Here's a breakdown.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Local development</span><br />
<span style="font-family: monospace;" class="mycode_font">.env</span> files loaded by dotenv (or equivalent). Never commit them - add to <span style="font-family: monospace;" class="mycode_font">.gitignore</span> on day one. Keep a <span style="font-family: monospace;" class="mycode_font">.env.example</span> with all required keys but no values, committed to the repo so new team members know what's needed.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">CI/CD</span><br />
Use your CI platform's secret store (GitHub Actions secrets, GitLab CI variables). These are injected as environment variables at runtime and never appear in logs. Rotate them after anyone with access leaves.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Production (small/medium scale)</span><br />
Options in rough order of increasing rigour:<ul class="mycode_list"><li>Environment variables set directly on the server or in a systemd unit file - simple, works, no extra dependencies<br />
</li>
<li>Docker secrets or Kubernetes secrets (base64 encoded, not actually encrypted at rest unless you configure that separately)<br />
</li>
<li>AWS Parameter Store / Secrets Manager - encrypted at rest, IAM access control, audit trail, automatic rotation for supported services<br />
</li>
<li>HashiCorp Vault - the serious option for large teams; dynamic credentials that expire, fine-grained policies, full audit log<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Things to never do:</span><ul class="mycode_list"><li>Commit secrets to git, even in private repos - they end up in history and are hard to fully purge<br />
</li>
<li>Log secrets (watch for debug logging that dumps request headers or env vars)<br />
</li>
<li>Put secrets in Docker image layers<br />
</li>
<li>Share secrets over Slack/Discord/email<br />
</li>
</ul>
<br />
What's your setup? Small project .env or something more serious?]]></description>
			<content:encoded><![CDATA[Secrets management is one of those things where the right answer scales from "a .env file" to "Vault with dynamic credentials" depending on where you are. Here's a breakdown.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Local development</span><br />
<span style="font-family: monospace;" class="mycode_font">.env</span> files loaded by dotenv (or equivalent). Never commit them - add to <span style="font-family: monospace;" class="mycode_font">.gitignore</span> on day one. Keep a <span style="font-family: monospace;" class="mycode_font">.env.example</span> with all required keys but no values, committed to the repo so new team members know what's needed.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">CI/CD</span><br />
Use your CI platform's secret store (GitHub Actions secrets, GitLab CI variables). These are injected as environment variables at runtime and never appear in logs. Rotate them after anyone with access leaves.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Production (small/medium scale)</span><br />
Options in rough order of increasing rigour:<ul class="mycode_list"><li>Environment variables set directly on the server or in a systemd unit file - simple, works, no extra dependencies<br />
</li>
<li>Docker secrets or Kubernetes secrets (base64 encoded, not actually encrypted at rest unless you configure that separately)<br />
</li>
<li>AWS Parameter Store / Secrets Manager - encrypted at rest, IAM access control, audit trail, automatic rotation for supported services<br />
</li>
<li>HashiCorp Vault - the serious option for large teams; dynamic credentials that expire, fine-grained policies, full audit log<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Things to never do:</span><ul class="mycode_list"><li>Commit secrets to git, even in private repos - they end up in history and are hard to fully purge<br />
</li>
<li>Log secrets (watch for debug logging that dumps request headers or env vars)<br />
</li>
<li>Put secrets in Docker image layers<br />
</li>
<li>Share secrets over Slack/Discord/email<br />
</li>
</ul>
<br />
What's your setup? Small project .env or something more serious?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[REST vs GraphQL vs tRPC - which API style are you using and why?]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=97</link>
			<pubDate>Mon, 22 Jun 2026 11:25:09 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=97</guid>
			<description><![CDATA[API design is one of those decisions that's hard to reverse once you have clients depending on it. Here's my current thinking on each approach.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">REST</span><br />
Still the right default for most public APIs and anything that needs to be consumed by third parties. Widely understood, tooling is everywhere, HTTP caching works naturally. The pain points - over-fetching, under-fetching, multiple round trips for related data - are real but manageable at typical scales.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">GraphQL</span><br />
Solves the over/under-fetching problem elegantly. Client specifies exactly what it needs, server returns exactly that. Good for complex frontends with varied data requirements. The costs: N+1 query problems require careful handling (DataLoader pattern), caching is harder than REST, and the mental overhead for simple use cases isn't worth it. Best when you have multiple clients (web, mobile, third-party) with genuinely different data needs.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">tRPC</span><br />
Type-safe RPC between TypeScript client and server. If you're building a TypeScript monorepo (Next.js, for example), the DX is exceptional - you get full type inference from server to client with no code generation step. The obvious limitation: TypeScript only. Not suitable for multi-language teams or public APIs.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">My actual recommendation:</span><ul class="mycode_list"><li>Public API: REST<br />
</li>
<li>TypeScript fullstack: tRPC<br />
</li>
<li>Complex multi-client product with varied data shapes: GraphQL<br />
</li>
<li>Internal microservice communication: gRPC if you care about performance, REST if you don't<br />
</li>
</ul>
<br />
What are you building APIs with right now?]]></description>
			<content:encoded><![CDATA[API design is one of those decisions that's hard to reverse once you have clients depending on it. Here's my current thinking on each approach.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">REST</span><br />
Still the right default for most public APIs and anything that needs to be consumed by third parties. Widely understood, tooling is everywhere, HTTP caching works naturally. The pain points - over-fetching, under-fetching, multiple round trips for related data - are real but manageable at typical scales.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">GraphQL</span><br />
Solves the over/under-fetching problem elegantly. Client specifies exactly what it needs, server returns exactly that. Good for complex frontends with varied data requirements. The costs: N+1 query problems require careful handling (DataLoader pattern), caching is harder than REST, and the mental overhead for simple use cases isn't worth it. Best when you have multiple clients (web, mobile, third-party) with genuinely different data needs.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">tRPC</span><br />
Type-safe RPC between TypeScript client and server. If you're building a TypeScript monorepo (Next.js, for example), the DX is exceptional - you get full type inference from server to client with no code generation step. The obvious limitation: TypeScript only. Not suitable for multi-language teams or public APIs.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">My actual recommendation:</span><ul class="mycode_list"><li>Public API: REST<br />
</li>
<li>TypeScript fullstack: tRPC<br />
</li>
<li>Complex multi-client product with varied data shapes: GraphQL<br />
</li>
<li>Internal microservice communication: gRPC if you care about performance, REST if you don't<br />
</li>
</ul>
<br />
What are you building APIs with right now?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[What is your primary programming language and why?]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=28</link>
			<pubDate>Sun, 21 Jun 2026 09:42:20 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=28</guid>
			<description><![CDATA[Curious what everyone here reaches for by default and why. Not looking for a flame war - genuinely interested in the reasoning behind people's choices and what kind of work they do.<br />
<br />
For me it shifts depending on context: Python for scripting and anything data-related, Go when I need something that runs fast and deploys as a single binary, and TypeScript when I'm touching a frontend. If I had to pick one gun to a head, probably Python just for sheer versatility.<br />
<br />
What's yours? Bonus points if you also mention what you'd <span style="font-style: italic;" class="mycode_i">like</span> to learn next.]]></description>
			<content:encoded><![CDATA[Curious what everyone here reaches for by default and why. Not looking for a flame war - genuinely interested in the reasoning behind people's choices and what kind of work they do.<br />
<br />
For me it shifts depending on context: Python for scripting and anything data-related, Go when I need something that runs fast and deploys as a single binary, and TypeScript when I'm touching a frontend. If I had to pick one gun to a head, probably Python just for sheer versatility.<br />
<br />
What's yours? Bonus points if you also mention what you'd <span style="font-style: italic;" class="mycode_i">like</span> to learn next.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[What are you building right now?]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=27</link>
			<pubDate>Sun, 21 Jun 2026 09:42:20 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=27</guid>
			<description><![CDATA[Simple thread to share what you are currently working on - side projects, work stuff, learning experiments, anything goes.<br />
<br />
I'll start: I've been putting together a small home lab dashboard that aggregates service health, temperature sensors, and network stats into one page. Nothing fancy, just a Go backend with server-sent events pushing updates to a vanilla JS frontend. Keeping it dependency-light on purpose.<br />
<br />
What about you? What's on your workbench right now?]]></description>
			<content:encoded><![CDATA[Simple thread to share what you are currently working on - side projects, work stuff, learning experiments, anything goes.<br />
<br />
I'll start: I've been putting together a small home lab dashboard that aggregates service health, temperature sensors, and network stats into one page. Nothing fancy, just a Go backend with server-sent events pushing updates to a vanilla JS frontend. Keeping it dependency-light on purpose.<br />
<br />
What about you? What's on your workbench right now?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Resources] Programming Learning Resources Megathread]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=26</link>
			<pubDate>Sun, 21 Jun 2026 09:42:20 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=26</guid>
			<description><![CDATA[A curated list of free and quality resources to learn programming. Reply to suggest additions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">General / Multi-Language</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">The Odin Project</span> - Full-stack web dev curriculum, completely free<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CS50</span> (Harvard) - Excellent intro to computer science, free on edX<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">roadmap.sh</span> - Visual learning paths for every major tech role<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">exercism.io</span> - Practice exercises with mentor feedback, 70+ languages<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">LeetCode / NeetCode</span> - Algorithm and data structure practice<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Python</span><ul class="mycode_list"><li>docs.python.org/3/tutorial - Official tutorial, surprisingly good<br />
</li>
<li>Automate the Boring Stuff with Python - free at automatetheboringstuff.com<br />
</li>
<li>Real Python (realpython.com) - In-depth articles<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">JavaScript / Web</span><ul class="mycode_list"><li>MDN Web Docs (developer.mozilla.org) - The definitive reference<br />
</li>
<li>javascript.info - Best free JS textbook on the internet<br />
</li>
<li>The Odin Project (mentioned above)<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Systems / Low Level</span><ul class="mycode_list"><li>"The C Programming Language" - Kernighan &amp; Ritchie (K&amp;R)<br />
</li>
<li>cs.cornell.edu/courses/cs3110 - OCaml &amp; functional concepts<br />
</li>
<li>craftinginterpreters.com - Build a language from scratch, free online<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Tools</span><ul class="mycode_list"><li>missing.csail.mit.edu - MIT's "Missing Semester" (Git, shell, Vim, debugging)<br />
</li>
<li>learngitbranching.js.org - Interactive Git visualizer<br />
</li>
</ul>
]]></description>
			<content:encoded><![CDATA[A curated list of free and quality resources to learn programming. Reply to suggest additions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">General / Multi-Language</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">The Odin Project</span> - Full-stack web dev curriculum, completely free<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CS50</span> (Harvard) - Excellent intro to computer science, free on edX<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">roadmap.sh</span> - Visual learning paths for every major tech role<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">exercism.io</span> - Practice exercises with mentor feedback, 70+ languages<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">LeetCode / NeetCode</span> - Algorithm and data structure practice<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Python</span><ul class="mycode_list"><li>docs.python.org/3/tutorial - Official tutorial, surprisingly good<br />
</li>
<li>Automate the Boring Stuff with Python - free at automatetheboringstuff.com<br />
</li>
<li>Real Python (realpython.com) - In-depth articles<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">JavaScript / Web</span><ul class="mycode_list"><li>MDN Web Docs (developer.mozilla.org) - The definitive reference<br />
</li>
<li>javascript.info - Best free JS textbook on the internet<br />
</li>
<li>The Odin Project (mentioned above)<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Systems / Low Level</span><ul class="mycode_list"><li>"The C Programming Language" - Kernighan &amp; Ritchie (K&amp;R)<br />
</li>
<li>cs.cornell.edu/courses/cs3110 - OCaml &amp; functional concepts<br />
</li>
<li>craftinginterpreters.com - Build a language from scratch, free online<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Tools</span><ul class="mycode_list"><li>missing.csail.mit.edu - MIT's "Missing Semester" (Git, shell, Vim, debugging)<br />
</li>
<li>learngitbranching.js.org - Interactive Git visualizer<br />
</li>
</ul>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Rules] Programming & Development — Forum Rules]]></title>
			<link>https://talkativeturtles.club/showthread.php?tid=4</link>
			<pubDate>Sun, 21 Jun 2026 09:34:07 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://talkativeturtles.club/member.php?action=profile&uid=1">Zero Two</a>]]></dc:creator>
			<guid isPermaLink="false">https://talkativeturtles.club/showthread.php?tid=4</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Programming &amp; Development</span> covers all languages, frameworks, tools, and software engineering topics.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Posting Rules:</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Use [code] tags for all code.</span> Unformatted code dumps are hard to read and may be removed.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Be specific in thread titles.</span> "Python error" is unhelpful; "ValueError: list index out of range when iterating JSON in Python 3.11" is useful.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Include context.</span> Share the relevant code, the error message (full traceback), and what you have already tried.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Search before posting.</span> Duplicate threads clutter the forum. Use the search function first.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Credit others' code.</span> If you paste code from Stack Overflow, GitHub, or other sources, attribute it.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">No "do my homework" posts.</span> Show your own attempt and ask for guidance, not a complete solution.<br />
</li>
</ul>
<br />
For project feedback and full code reviews, use <span style="font-weight: bold;" class="mycode_b">Code Review &amp; Feedback</span> instead.]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Programming &amp; Development</span> covers all languages, frameworks, tools, and software engineering topics.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Posting Rules:</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Use [code] tags for all code.</span> Unformatted code dumps are hard to read and may be removed.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Be specific in thread titles.</span> "Python error" is unhelpful; "ValueError: list index out of range when iterating JSON in Python 3.11" is useful.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Include context.</span> Share the relevant code, the error message (full traceback), and what you have already tried.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Search before posting.</span> Duplicate threads clutter the forum. Use the search function first.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Credit others' code.</span> If you paste code from Stack Overflow, GitHub, or other sources, attribute it.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">No "do my homework" posts.</span> Show your own attempt and ask for guidance, not a complete solution.<br />
</li>
</ul>
<br />
For project feedback and full code reviews, use <span style="font-weight: bold;" class="mycode_b">Code Review &amp; Feedback</span> instead.]]></content:encoded>
		</item>
	</channel>
</rss>