<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Programming Environment and Git on Work You Can Explain</title>
		<link>https://workyoucanexplain.com/series/programming-environment-and-git/</link>
		<description>Recent content in Programming Environment and Git on Work You Can Explain</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
			<copyright>Copyright © Work You Can Explain</copyright>
		
		
			<lastBuildDate>Fri, 24 Jul 2026 00:00:00 -0500</lastBuildDate>
		
			<atom:link href="https://workyoucanexplain.com/series/programming-environment-and-git/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Editor, Language, Runtime, Compiler, and Package Manager Explained</title>
				<link>https://workyoucanexplain.com/posts/editor-language-runtime-compiler-and-package-manager-explained/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/editor-language-runtime-compiler-and-package-manager-explained/</guid>
				<description>&lt;p&gt;A programming environment is a collection of parts, not one application. The&#xA;editor changes source files. The language defines how source is written. A&#xA;compiler or interpreter processes it. A runtime supports execution. A package&#xA;manager handles external code. Linters, formatters, debuggers, and test runners&#xA;check or inspect different aspects of the work.&lt;/p&gt;&#xA;&lt;p&gt;When you name the parts, an error becomes easier to locate.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-editor-changes-files&#34;&gt;The editor changes files&lt;/h2&gt;&#xA;&lt;p&gt;An editor lets you create and modify source code. It may also show project&#xA;files, open a terminal, run extensions, and call other tools.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Install Only What the Course Requires</title>
				<link>https://workyoucanexplain.com/posts/install-only-what-the-course-requires/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/install-only-what-the-course-requires/</guid>
				<description>&lt;p&gt;Install the smallest environment that satisfies the course&amp;rsquo;s documented&#xA;requirements. Match required versions, keep project dependencies isolated when&#xA;the ecosystem supports it, retain dependency records, and document how you&#xA;verified the installation.&lt;/p&gt;&#xA;&lt;p&gt;More tools do not create a more capable beginner environment. They create more&#xA;possible sources of version and path conflicts.&lt;/p&gt;&#xA;&lt;h2 id=&#34;start-with-course-evidence&#34;&gt;Start with course evidence&lt;/h2&gt;&#xA;&lt;p&gt;Before downloading anything, collect:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the syllabus and current assignment instructions;&lt;/li&gt;&#xA;&lt;li&gt;an instructor-provided setup guide;&lt;/li&gt;&#xA;&lt;li&gt;the starter project&amp;rsquo;s README and configuration files;&lt;/li&gt;&#xA;&lt;li&gt;required language and tool versions;&lt;/li&gt;&#xA;&lt;li&gt;supported operating systems;&lt;/li&gt;&#xA;&lt;li&gt;required editor or IDE, if any;&lt;/li&gt;&#xA;&lt;li&gt;dependency installation commands; and&lt;/li&gt;&#xA;&lt;li&gt;the exact command used to run or test the first exercise.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Treat a classmate&amp;rsquo;s setup, an old video, and an AI-generated list as leads, not&#xA;authority. They may describe another semester or operating system.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Open the Project Folder, Not Just the Code File</title>
				<link>https://workyoucanexplain.com/posts/open-the-project-folder-not-just-the-code-file/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/open-the-project-folder-not-just-the-code-file/</guid>
				<description>&lt;p&gt;A program is usually more than the file you are editing. Open the project&#xA;folder so the editor, terminal, dependency tools, tests, and documentation share&#xA;the same root and configuration.&lt;/p&gt;&#xA;&lt;p&gt;Opening only &lt;code&gt;main.py&lt;/code&gt; or &lt;code&gt;Program.java&lt;/code&gt; can hide the files that explain how the&#xA;project works.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-project-root-supplies-shared-context&#34;&gt;The project root supplies shared context&lt;/h2&gt;&#xA;&lt;p&gt;The project root is the top-level folder that contains the project as a coherent&#xA;unit. It may contain:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;weather-project/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── README.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── pyproject.toml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── src/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── weather.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── tests/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── test_weather.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── data/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    └── sample.csv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The root is not automatically the folder containing the active source file.&#xA;While the example above demonstrates a typical Python project layout (&lt;code&gt;pyproject.toml&lt;/code&gt;, &lt;code&gt;src/weather.py&lt;/code&gt;), different language ecosystems format code and dependencies using their own standard configuration files—such as &lt;code&gt;pom.xml&lt;/code&gt; or &lt;code&gt;build.gradle&lt;/code&gt; for Java, &lt;code&gt;Cargo.toml&lt;/code&gt; for Rust, &lt;code&gt;go.mod&lt;/code&gt; for Go, or &lt;code&gt;package.json&lt;/code&gt; for Node.js/TypeScript. Regardless of the language toolchain, the project root remains the canonical entry point that groups source code with its project-level documentation (&lt;code&gt;README.md&lt;/code&gt;), tests, and configuration.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A Beginner’s First Programming Workflow</title>
				<link>https://workyoucanexplain.com/posts/a-beginners-first-programming-workflow/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/a-beginners-first-programming-workflow/</guid>
				<description>&lt;p&gt;Use one repeatable loop for beginner programming work: understand the task,&#xA;plan one small change, change the code, run it, test the expected behavior, and&#xA;create the checkpoint required by the project. A Git project can use a commit;&#xA;another course may require a working-log entry, saved version, or submission.&#xA;Each step produces evidence for the next.&lt;/p&gt;&#xA;&lt;p&gt;The loop prevents a vague assignment from becoming a large, unexplained edit.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-understand-the-task&#34;&gt;1. Understand the task&lt;/h2&gt;&#xA;&lt;p&gt;Before editing, state:&lt;/p&gt;</description>
			</item>
			<item>
				<title>What Git Is Actually Tracking</title>
				<link>https://workyoucanexplain.com/posts/what-git-is-actually-tracking/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/what-git-is-actually-tracking/</guid>
				<description>&lt;p&gt;Git is a version-control tool that records selected project snapshots locally.&#xA;It appears in this path because a course or project may use that history to&#xA;inspect and explain changes. Git does not watch every file on the computer or&#xA;save every keystroke. In one repository, Git compares the working tree, the&#xA;staging area, and committed snapshots. You decide which file content enters the&#xA;proposed next snapshot and when that snapshot becomes history.&lt;/p&gt;</description>
			</item>
			<item>
				<title>`git status` and `git diff`: Your Safety Instruments</title>
				<link>https://workyoucanexplain.com/posts/git-status-and-git-diff-your-safety-instruments/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/git-status-and-git-diff-your-safety-instruments/</guid>
				<description>&lt;p&gt;Run &lt;code&gt;git status&lt;/code&gt; and &lt;code&gt;git diff&lt;/code&gt; before committing, switching tasks, or accepting&#xA;an AI-generated edit. They answer different questions: status summarizes file&#xA;states; diff shows the content changes behind those states.&lt;/p&gt;&#xA;&lt;h2 id=&#34;read-status-as-an-inventory&#34;&gt;Read status as an inventory&lt;/h2&gt;&#xA;&lt;p&gt;The official &lt;a href=&#34;https://git-scm.com/docs/git-status&#34;&gt;&lt;code&gt;git status&lt;/code&gt; documentation&lt;/a&gt;&#xA;states that it reports differences between &lt;code&gt;HEAD&lt;/code&gt; and the index, between the&#xA;index and working tree, and untracked files not excluded by ignore rules.&lt;/p&gt;&#xA;&lt;p&gt;In practical terms:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;untracked&lt;/strong&gt; means the file is present but not in Git&amp;rsquo;s index;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;modified, not staged&lt;/strong&gt; means the working copy differs from the index;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;staged&lt;/strong&gt; means the index contains a change proposed for the next commit; and&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;clean&lt;/strong&gt; means Git sees no tracked or untracked change to report under the&#xA;current rules.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Clean does not mean correct, tested, backed up, or pushed.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How to Make a Useful Commit</title>
				<link>https://workyoucanexplain.com/posts/how-to-make-a-useful-commit/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/how-to-make-a-useful-commit/</guid>
				<description>&lt;p&gt;A useful commit is a small, understandable checkpoint. It contains one logical&#xA;change, excludes unrelated files and secrets, records a descriptive message, and&#xA;follows relevant verification.&lt;/p&gt;&#xA;&lt;h2 id=&#34;define-the-change-before-staging&#34;&gt;Define the change before staging&lt;/h2&gt;&#xA;&lt;p&gt;State the outcome in one sentence:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Add input validation for an empty student name.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;If the sentence requires “and” to join unrelated outcomes, consider separate&#xA;commits. A single logical change may touch code, tests, and documentation when&#xA;they jointly implement one outcome.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GitHub Is More Than Online Storage</title>
				<link>https://workyoucanexplain.com/posts/github-is-more-than-online-storage/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/github-is-more-than-online-storage/</guid>
				<description>&lt;p&gt;GitHub can store a remote copy of a Git repository, but its larger role is&#xA;collaboration around that repository. It adds access controls, issues, pull&#xA;requests, review, automation, releases, and project presentation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;separate-git-from-github&#34;&gt;Separate Git from GitHub&lt;/h2&gt;&#xA;&lt;p&gt;Git records repository history locally. GitHub hosts repositories and services&#xA;around them. A remote is a named location used to exchange repository data; it&#xA;is not the only valid copy and does not replace a tested backup.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Your First Merge Conflict Should Be Deliberate</title>
				<link>https://workyoucanexplain.com/posts/your-first-merge-conflict-should-be-deliberate/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/your-first-merge-conflict-should-be-deliberate/</guid>
				<description>&lt;p&gt;A merge conflict is Git asking a person to decide how overlapping changes should&#xA;combine. Practice once in a disposable repository, with a clean working tree,&#xA;before deadlines or team work make the decision stressful.&lt;/p&gt;&#xA;&lt;h2 id=&#34;create-a-controlled-conflict&#34;&gt;Create a controlled conflict&lt;/h2&gt;&#xA;&lt;p&gt;Use a new practice repository with no important files. Commands assume a recent&#xA;Git installation and a default branch named &lt;code&gt;main&lt;/code&gt;; adjust the branch name only&#xA;if your repository uses another one.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A Project README That Lets Someone Else Succeed</title>
				<link>https://workyoucanexplain.com/posts/a-project-readme-that-lets-someone-else-succeed/</link>
				<pubDate>Fri, 24 Jul 2026 00:00:00 -0500</pubDate>
				<guid>https://workyoucanexplain.com/posts/a-project-readme-that-lets-someone-else-succeed/</guid>
				<description>&lt;p&gt;A README succeeds when another person can understand the project and reproduce&#xA;its expected result without reconstructing your memory. State what the project&#xA;does, what it requires, how to install, run, test, and verify it, and where to&#xA;get help.&lt;/p&gt;&#xA;&lt;h2 id=&#34;write-for-a-defined-reader&#34;&gt;Write for a defined reader&lt;/h2&gt;&#xA;&lt;p&gt;Name the reader and starting state:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;These instructions are for a CS 101 student with Git and Python 3.13 installed&#xA;who has cloned the repository but has not created the environment.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
