<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://iamprasadraju.github.io/feed/projects.xml" rel="self" type="application/atom+xml" /><link href="https://iamprasadraju.github.io/" rel="alternate" type="text/html" /><updated>2026-07-09T07:03:57+00:00</updated><id>https://iamprasadraju.github.io/feed/projects.xml</id><title type="html">Prasad Raju G | Projects</title><subtitle>Independent AI Researcher &amp; Systems Engineer focusing on ML/DL algorithms, Python, PyTorch, and building systems engineering projects on GitHub.
</subtitle><author><name>Email me at</name><email>gls.prasadraju@gmail.com</email></author><entry><title type="html">AlgoX</title><link href="https://iamprasadraju.github.io/projects/2026-06-08-algoX.html" rel="alternate" type="text/html" title="AlgoX" /><published>2026-06-08T00:00:00+00:00</published><updated>2026-06-08T00:00:00+00:00</updated><id>https://iamprasadraju.github.io/projects/algoX</id><content type="html" xml:base="https://iamprasadraju.github.io/projects/2026-06-08-algoX.html"><![CDATA[<div align="center">

<picture>
  <source media="(prefers-color-scheme: light)" srcset="docs/algox.svg" />
  <img alt="tiny corp logo" src="https://github.com/iamprasadraju/algoX/raw/main/docs/algox.svg" width="50%" height="50%" />
</picture>

<p style="margin: 2px 0 0 0;">
  AlgoX brings <strong>STL-style data structures</strong> and <strong>algorithms</strong> to Python with a <strong>native C backend</strong>.
</p>

![Project Status](https://img.shields.io/badge/status-under%20development-orange)

</div>

<hr />

<h2 id="what-is-algox">What is AlgoX?</h2>

<p><strong>AlgoX</strong> is a <strong>C-powered algorithms and data structures library</strong> for <strong>Python</strong>. It provides <strong>STL-inspired containers</strong>, <strong>generic algorithms</strong>, and <strong>low-overhead implementations</strong> designed for <strong>performance</strong>, <strong>learning</strong>, and <strong>experimentation</strong>.</p>]]></content><author><name>Email me at</name><email>gls.prasadraju@gmail.com</email></author><category term="Python" /><category term="C" /><category term="Algorithms" /><category term="Data Structures" /><category term="High Performance" /><summary type="html"><![CDATA[AlgoX is a high-performance Python library that introduces STL-style data structures and algorithms via a native C backend. It is optimized for speed, learning, and algorithmic experimentation.]]></summary></entry><entry><title type="html">TrueML</title><link href="https://iamprasadraju.github.io/projects/2026-06-08-TrueML.html" rel="alternate" type="text/html" title="TrueML" /><published>2026-06-08T00:00:00+00:00</published><updated>2026-06-08T00:00:00+00:00</updated><id>https://iamprasadraju.github.io/projects/TrueML</id><content type="html" xml:base="https://iamprasadraju.github.io/projects/2026-06-08-TrueML.html"><![CDATA[<div align="center">

<picture>
  <source media="(prefers-color-scheme: light)" srcset="docs/trueml-dark.svg" />
  <img alt="trueml" src="https://github.com/iamprasadraju/TrueML/raw/main/docs/trueml-light.svg" width="50%" height="50%" />
</picture>
</div>

<h2 id="why-choose-a-no-abstraction-philosophy">Why Choose a No-Abstraction Philosophy?</h2>

<p>Most machine learning frameworks present a <strong>black-box contract</strong>: data goes in, a trained model comes out. <code class="language-plaintext highlighter-rouge">sklearn.linear_model.LinearRegression().fit(X, y)</code> conceals the <strong>forward pass</strong>, the <strong>loss evaluation</strong>, the <strong>gradient computation</strong>, and the <strong>parameter update</strong> behind a single method call. While convenient for production, this opacity is antithetical to <strong>understanding</strong>.</p>

<p>TrueML adopts the opposite stance: <strong>zero abstraction</strong>. Every mathematical operation in the learning pipeline is a <strong>first-class function</strong> you invoke explicitly. The library provides the <strong>primitive operations</strong>; you write the <strong>protocol</strong>.</p>

<h3 id="how-does-the-four-step-pipeline-work">How Does the Four-Step Pipeline Work?</h3>

<p>Every <strong>supervised learning</strong> experiment in TrueML follows this canonical sequence:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="rouge-code"><pre>┌─────────────────────────────────────────────────────────┐
│                     TRAINING LOOP                       │
│                                                         │
│  1. FORWARD     y_pred = model.forward(X)               │
│       ŷ = Xw + b                                        │
│                                                         │
│  2. LOSS        error = loss_fn(y, y_pred)              │
│       L = |y – ŷ|                                       │
│                                                         │
│  3. GRADIENT    dw, db = loss_fn.grad(X, error)         │
│       ∂L/∂w = (1/n) Xᵀ · ∂L/∂ŷ                          │
│                                                         │
│  4. BACKWARD      model.backward(dw, db)                │
│       w ← w – η · ∂L/∂w                                 │
└─────────────────────────────────────────────────────────┘
</pre></td></tr></tbody></table></code></pre></div></div>

<p>There is no <code class="language-plaintext highlighter-rouge">.fit()</code>. There is no hidden state. The user controls every step.</p>

<h3 id="why-is-statelessness-a-core-design-principle">Why is Statelessness a Core Design Principle?</h3>

<p>TrueML models are <strong>stateless with respect to data</strong>. They hold <strong>parameters</strong> (<strong>weights</strong>, <strong>bias</strong>) but never cache a training example. This means:</p>

<ul>
  <li><strong>No accidental leakage</strong>: a model cannot remember a previous batch.</li>
  <li><strong>Explicit dataflow</strong>: you always know what data produced what gradient.</li>
  <li><strong>Composability</strong>: any step can be replaced, inspected, or debugged in isolation.</li>
</ul>

<p>If you want to log gradients before the update, you print them. If you want to try a custom update rule, you write it yourself. The library does not abstract away what you need to see.</p>

<h3 id="who-is-this-library-built-for">Who is This Library Built For?</h3>

<ul>
  <li><strong>Researchers</strong> who want to <strong>read every line</strong> of their training loop.</li>
  <li><strong>Students</strong> learning how gradients actually <strong>flow</strong> through a linear model.</li>
  <li><strong>Practitioners</strong> who need a <strong>minimal, auditable baseline</strong> before layering complexity.</li>
</ul>]]></content><author><name>Email me at</name><email>gls.prasadraju@gmail.com</email></author><category term="Machine Learning" /><category term="Deep Learning" /><category term="Python" /><category term="Education" /><summary type="html"><![CDATA[A zero-abstraction machine learning framework designed for deep understanding of training loops, gradients, and model architecture. TrueML exposes the fundamental primitive operations of ML, enabling developers and researchers to explicitly invoke every step without black-box methods.]]></summary></entry><entry><title type="html">Gen-CLI</title><link href="https://iamprasadraju.github.io/projects/2026-05-08-gen-cli.html" rel="alternate" type="text/html" title="Gen-CLI" /><published>2026-05-08T00:00:00+00:00</published><updated>2026-05-08T00:00:00+00:00</updated><id>https://iamprasadraju.github.io/projects/gen-cli</id><content type="html" xml:base="https://iamprasadraju.github.io/projects/2026-05-08-gen-cli.html"><![CDATA[<p align="center">
  <img src="https://github.com/iamprasadraju/gen-cli/raw/main/gen-cli.svg" width="120" alt="Gen-CLI Logo" />
  <br />
  <b>Gen-CLI</b> is a <b>Python-based command-line tool</b> for generating <b>boilerplate code</b> and <b>framework templates</b> for multiple programming languages.
</p>

<p align="center">
  <a href="https://pypi.org/project/gen-cli/"><img src="https://img.shields.io/pypi/v/gen-cli.svg" alt="PyPI Version" /></a>
  <a href="https://github.com/iamprasadraju/gen-cli/actions/workflows/ci.yaml"><img src="https://github.com/iamprasadraju/gen-cli/actions/workflows/ci.yaml/badge.svg" alt="CI" /></a>
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.13+-blue.svg" alt="Python" /></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License" /></a>
  <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style" /></a>
</p>

<h2 id="what-are-the-key-features-of-gen-cli">What are the key features of Gen-CLI?</h2>

<ul>
  <li><strong>Single-file boilerplate generation</strong> for multiple languages</li>
  <li><strong>Project scaffolding</strong> using framework templates</li>
  <li>Colorful directory <strong>tree visualization</strong></li>
  <li><strong>Environment diagnostics</strong> with <code class="language-plaintext highlighter-rouge">gen doctor</code></li>
  <li><strong>Dry-run mode</strong> for previewing outputs</li>
  <li><strong>Overwrite support</strong> for existing files/directories</li>
</ul>

<hr />

<h2 id="how-do-i-install-gen-cli">How do I install Gen-CLI?</h2>

<h3 id="how-to-install-using-pypi-pip">How to install using PyPI pip?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>pip <span class="nb">install </span>gen-cli
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="how-to-install-from-source">How to install from source?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="rouge-code"><pre>git clone https://github.com/iamprasadraju/gen-cli.git
<span class="nb">cd </span>gen-cli

<span class="c"># Install for usage</span>
pip <span class="nb">install</span> <span class="nt">-e</span> <span class="nb">.</span>

<span class="c"># Install for development (includes tests, linting tools)</span>
pip <span class="nb">install</span> <span class="nt">-e</span> .[dev]
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="how-to-install-using-uv">How to install using uv?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>uv <span class="nb">sync</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="how-can-i-verify-my-installation">How can I verify my installation?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>gen <span class="nt">--version</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h2 id="how-do-i-quickly-start-using-gen-cli">How do I quickly start using Gen-CLI?</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="rouge-code"><pre><span class="c"># Generate a C boilerplate file</span>
gen c

<span class="c"># Generate a Python boilerplate file</span>
gen py

<span class="c"># Generate a Flask project</span>
gen flask

<span class="c"># List available languages and frameworks</span>
gen list

<span class="c"># Show directory tree</span>
gen tree

<span class="c"># Check your environment</span>
gen doctor
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h2 id="what-commands-are-available">What commands are available?</h2>

<h3 id="how-to-check-the-version-gen---version">How to check the version (<code class="language-plaintext highlighter-rouge">gen --version</code>)?</h3>

<p>Show the installed version of <strong>gen-cli</strong>.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre></td><td class="rouge-code"><pre>gen <span class="nt">--version</span>
gen <span class="nt">-v</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p>Output: <code class="language-plaintext highlighter-rouge">gen-cli version 1.0.0</code></p>

<hr />

<h3 id="how-to-get-help-gen---help">How to get help (<code class="language-plaintext highlighter-rouge">gen --help</code>)?</h3>

<p>Show the <strong>help message</strong> with all available commands and options.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre></td><td class="rouge-code"><pre>gen <span class="nt">--help</span>
gen <span class="nt">-h</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h3 id="how-to-list-available-templates-gen-list">How to list available templates (<code class="language-plaintext highlighter-rouge">gen list</code>)?</h3>

<p>List all available <strong>language templates</strong> and <strong>framework templates</strong>.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>gen list
</pre></td></tr></tbody></table></code></pre></div></div>

<p>Output:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="rouge-code"><pre>Available Languages
-------------------
  • .py
  • .c
  • .cpp
  • .go
  • .js
  • .rs
  • .html
  • .java

Available Frameworks
--------------------
  • flask
  • codeforces
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h3 id="how-to-diagnose-my-environment-gen-doctor">How to diagnose my environment (<code class="language-plaintext highlighter-rouge">gen doctor</code>)?</h3>

<p>Check your <strong>environment</strong> and <strong>configuration</strong> for potential issues.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>gen doctor
</pre></td></tr></tbody></table></code></pre></div></div>

<p>Output:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="rouge-code"><pre>Gen CLI Doctor
----------------------------------------
✓ Python Version: 3.13.12
✓ Platform: Darwin 24.0.0
✓ Working Directory: /Users/user/project
✓ PATH directories: 17 found

All checks passed
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h3 id="how-to-visualize-my-directory-gen-tree">How to visualize my directory (<code class="language-plaintext highlighter-rouge">gen tree</code>)?</h3>

<p>Display a colorful <strong>tree view</strong> of your directory structure.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="rouge-code"><pre>gen tree                    <span class="c"># current directory, depth 2, no hidden</span>
gen tree <span class="nt">-a</span>                 <span class="c"># include hidden files/dirs</span>
gen tree <span class="nt">-3</span>                 <span class="c"># depth of 3 levels</span>
gen tree <span class="nt">-3</span> src             <span class="c"># depth 3 of specific directory</span>
gen tree <span class="nt">-2</span> <span class="nt">-a</span> <span class="nb">.</span>            <span class="c"># depth 2, include hidden, current dir</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p><strong>Tree options:</strong></p>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">-N</code></td>
      <td>Set <strong>depth</strong> (e.g., <code class="language-plaintext highlighter-rouge">-2</code>, <code class="language-plaintext highlighter-rouge">-3</code>)</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">-a</code>, <code class="language-plaintext highlighter-rouge">--all</code></td>
      <td>Include <strong>hidden files/dirs</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>Colors:</strong></p>

<ul>
  <li><strong>Bold blue</strong> — directories</li>
  <li><strong>Green</strong> — regular files</li>
  <li><strong>Dim/gray</strong> — hidden files and connectors</li>
</ul>

<hr />

<h3 id="how-do-i-generate-language-boilerplate">How do I generate language boilerplate?</h3>

<p>Generate a <strong>boilerplate file</strong> for a specific language.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="rouge-code"><pre>gen c           <span class="c"># creates main.c</span>
gen py          <span class="c"># creates main.py</span>
gen js          <span class="c"># creates main.js</span>
gen go          <span class="c"># creates main.go</span>
gen rs          <span class="c"># creates main.rs</span>
gen cpp         <span class="c"># creates main.cpp</span>
gen java        <span class="c"># creates main.java</span>
gen html        <span class="c"># creates main.html</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p><strong>Options:</strong></p>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--dryrun</code></td>
      <td><strong>Preview</strong> the file content without creating it</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--overwrite</code></td>
      <td><strong>Overwrite</strong> existing file</td>
    </tr>
  </tbody>
</table>

<p><strong>Examples:</strong></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
</pre></td><td class="rouge-code"><pre>gen c <span class="nt">--dryrun</span>              <span class="c"># preview main.c content</span>
gen py <span class="nt">--overwrite</span>          <span class="c"># overwrite main.py if exists</span>
gen js <span class="nt">--dryrun</span> <span class="nt">--overwrite</span> <span class="c"># dry run (overwrite ignored)</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p><strong>When file already exists:</strong></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
</pre></td><td class="rouge-code"><pre>gen c
main.c already exists
Use <span class="nt">--overwrite</span> to replace: gen c <span class="nt">--overwrite</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h3 id="how-do-i-generate-framework-projects">How do I generate framework projects?</h3>

<p>Generate a full project from a <strong>framework template</strong>.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
</pre></td><td class="rouge-code"><pre>gen flask                   <span class="c"># prompts for project name</span>
gen flask myapp             <span class="c"># creates myapp/ directly</span>
gen codeforces              <span class="c"># prompts for project name</span>
gen codeforces solutions    <span class="c"># creates solutions/ directly</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p><strong>Options:</strong></p>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--dryrun</code></td>
      <td><strong>Preview</strong> project structure without creating</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--overwrite</code></td>
      <td><strong>Remove</strong> existing directory and regenerate</td>
    </tr>
  </tbody>
</table>

<p><strong>Examples:</strong></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
</pre></td><td class="rouge-code"><pre>gen flask <span class="nt">--dryrun</span>          <span class="c"># preview flask project tree</span>
gen flask myapp <span class="nt">--dryrun</span>    <span class="c"># preview tree for 'myapp'</span>
gen flask myapp <span class="nt">--overwrite</span> <span class="c"># overwrite myapp/ if exists</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p><strong>When directory already exists:</strong></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
</pre></td><td class="rouge-code"><pre>gen flask myapp
Directory <span class="s1">'myapp'</span> already exists
Use <span class="nt">--overwrite</span> to replace: gen flask myapp <span class="nt">--overwrite</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h2 id="which-programming-languages-are-supported">Which programming languages are supported?</h2>

<table>
  <thead>
    <tr>
      <th>Command</th>
      <th>Output File</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen c</code></td>
      <td><code class="language-plaintext highlighter-rouge">main.c</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen py</code></td>
      <td><code class="language-plaintext highlighter-rouge">main.py</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen js</code></td>
      <td><code class="language-plaintext highlighter-rouge">main.js</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen go</code></td>
      <td><code class="language-plaintext highlighter-rouge">main.go</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen rs</code></td>
      <td><code class="language-plaintext highlighter-rouge">main.rs</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen cpp</code></td>
      <td><code class="language-plaintext highlighter-rouge">main.cpp</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen java</code></td>
      <td><code class="language-plaintext highlighter-rouge">main.java</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen html</code></td>
      <td><code class="language-plaintext highlighter-rouge">main.html</code></td>
    </tr>
  </tbody>
</table>

<h2 id="which-frameworks-are-supported">Which frameworks are supported?</h2>

<table>
  <thead>
    <tr>
      <th>Command</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen flask</code></td>
      <td>Flask web application</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">gen codeforces</code></td>
      <td>Codeforces competitive programming setup</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="how-are-errors-handled">How are errors handled?</h2>

<p><strong>Gen-CLI</strong> provides clear <strong>error messages</strong> for common issues:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="rouge-code"><pre><span class="c"># Unknown command</span>
gen xyz
→ Unknown <span class="nb">command</span>: xyz
  Usage: gen <span class="o">[</span>list|doctor|tree|&lt;lang&gt;|&lt;framework&gt;] <span class="o">[</span><span class="nt">-v</span>|--version] <span class="o">[</span><span class="nt">-h</span>|--help]

<span class="c"># Unknown flag</span>
gen c <span class="nt">--invalid</span>
→ Unknown flag: <span class="nt">--invalid</span>
  Usage: gen <span class="o">[</span>list|doctor|&lt;lang&gt;|&lt;framework&gt;] <span class="o">[</span><span class="nt">-v</span>|--version] <span class="o">[</span><span class="nt">-h</span>|--help]

<span class="c"># Invalid tree depth format</span>
gen tree 3
→ Invalid depth format: <span class="s1">'3'</span>
  Use <span class="s1">'-'</span> prefix <span class="k">for </span>depth, e.g., <span class="s1">'gen tree -3'</span> or <span class="s1">'gen tree -3 src'</span>

<span class="c"># Path not found</span>
gen tree nonexistent
→ Path not found: nonexistent
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h2 id="how-do-i-set-up-for-development">How do I set up for development?</h2>

<h3 id="how-to-configure-the-setup">How to configure the setup?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>uv <span class="nb">sync</span> <span class="nt">--all-extras</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="how-to-run-tests">How to run tests?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="rouge-code"><pre><span class="c"># Run all tests</span>
uv run pytest tests <span class="nt">-v</span>

<span class="c"># Run specific test file</span>
uv run pytest tests/test_cli.py <span class="nt">-v</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="how-to-run-the-cli-from-source">How to run the CLI from source?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>uv run gen &lt;<span class="nb">command</span><span class="o">&gt;</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h2 id="what-does-the-project-structure-look-like">What does the project structure look like?</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="rouge-code"><pre>gen-cli/
├── src/
│   └── gen/
│       ├── __init__.py
│       ├── cli.py              # Main CLI entry point
│       ├── paths.py            # Template path resolution
│       ├── commands/
│       │   ├── __init__.py
│       │   ├── doctor.py       # Environment diagnostics
│       │   ├── helper.py       # Help messages
│       │   ├── list_.py        # Template listing &amp; tree view
│       │   └── template.py     # Template generation helpers
│       ├── core/
│       │   ├── __init__.py
│       │   └── render.py       # Jinja2 template rendering
│       └── templates/          # Built-in templates
│           ├── lang/           # Language boilerplate files
│           └── frameworks/     # Framework project templates
├── tests/
│   └── test_*.py               # Unit tests
├── pyproject.toml
└── README.md
</pre></td></tr></tbody></table></code></pre></div></div>

<hr />

<h2 id="what-is-the-license">What is the license?</h2>

<p>MIT License</p>

<hr />

<h2 id="who-is-the-author">Who is the author?</h2>

<p>Prasad Raju G</p>]]></content><author><name>Email me at</name><email>gls.prasadraju@gmail.com</email></author><category term="Python" /><category term="CLI" /><category term="Boilerplate" /><category term="Developer Tools" /><category term="Automation" /><summary type="html"><![CDATA[Gen-CLI is a powerful Python-based command-line tool designed for rapidly generating boilerplate code and framework templates. It streamlines developer workflows by scaffolding projects across multiple programming languages instantly.]]></summary></entry><entry><title type="html">Tic Tac Toe</title><link href="https://iamprasadraju.github.io/projects/2026-04-16-Tic-Tic-Toe.html" rel="alternate" type="text/html" title="Tic Tac Toe" /><published>2026-04-16T00:00:00+00:00</published><updated>2026-04-16T00:00:00+00:00</updated><id>https://iamprasadraju.github.io/projects/Tic-Tic-Toe</id><content type="html" xml:base="https://iamprasadraju.github.io/projects/2026-04-16-Tic-Tic-Toe.html"><![CDATA[<div align="center">
  <img width="35%" src="https://github.com/iamprasadraju/tic-tac-toe/raw/main/assets/tic-tac-toe.png" />
  <h2>Endless Tic-Tac-Toe</h2>
</div>

<p>A graphical Tic-Tac-Toe game built with <strong>Python</strong> and <strong>Pygame</strong>, featuring a <strong>pixel-art aesthetic</strong> and a <strong>classic two-player experience</strong>.</p>

<h2 id="what-are-its-features">What are its features?</h2>

<ul>
  <li><strong>Human vs Human</strong> — Two players take turns on the same machine (hot-seat).</li>
  <li><strong>Human vs AI</strong> — <em>(Work in progress, not yet playable.)</em></li>
  <li><strong>3×3 Grid</strong> — Turn-based play with alternating <strong>X</strong> and <strong>O</strong>.</li>
  <li><strong>Win &amp; Draw Detection</strong> — Automatically detects all 8 winning lines and board fills.</li>
  <li><strong>Confetti Celebration</strong> — Particle effects when a player wins.</li>
  <li><strong>Pixel-Art Styling</strong> — Custom pixel fonts for a retro look.</li>
  <li><strong>Play Again</strong> — Quick restart from the result screen.</li>
</ul>

<h2 id="how-do-you-get-started">How do you get started?</h2>

<h3 id="what-are-the-prerequisites">What are the prerequisites?</h3>

<ul>
  <li>Python <strong>3.13</strong> or higher</li>
</ul>

<h3 id="how-do-you-install-it">How do you install it?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>pip <span class="nb">install</span> <span class="nt">-r</span> requirements.txt
</pre></td></tr></tbody></table></code></pre></div></div>

<p>Or with <a href="https://docs.astral.sh/uv/">uv</a>:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>uv <span class="nb">sync</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="how-do-you-run-the-game">How do you run the game?</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>python game.py
</pre></td></tr></tbody></table></code></pre></div></div>

<h2 id="how-do-you-play">How do you play?</h2>

<ul>
  <li><strong>Left-click</strong> a cell to place your mark (<strong>X</strong> or <strong>O</strong>).</li>
  <li>Click <strong>“Play Again!”</strong> after a win or draw to start a new game.</li>
</ul>

<h2 id="how-is-the-project-structured">How is the project structured?</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="rouge-code"><pre>├── game.py          — Entry point and main game loop
├── board.py         — Game board, grid rendering, move logic, win/draw detection
├── effects.py       — Confetti particle system for win celebrations
├── assets/          — Fonts and images
│   ├── PixeloidSans.ttf
│   ├── PixeloidSans-Bold.ttf
│   └── tic-tac-toe.png
├── requirements.txt — Runtime dependency (pygame)
└── pyproject.toml   — Project metadata and Python version
</pre></td></tr></tbody></table></code></pre></div></div>

<h2 id="what-technologies-were-used">What technologies were used?</h2>

<ul>
  <li><a href="https://www.python.org/">Python</a> 3.13+</li>
  <li><a href="https://www.pygame.org/">Pygame</a> — Game framework</li>
  <li><a href="https://docs.astral.sh/ruff/">Ruff</a> — Linting</li>
  <li><a href="https://docs.astral.sh/uv/">uv</a> — Package management</li>
</ul>

<h2 id="what-are-the-current-limitations">What are the current limitations?</h2>

<ul>
  <li><strong>Human vs AI mode</strong> is a stub and not yet functional. Selecting it will cause a runtime error. Only <strong>Human vs Human</strong> is fully implemented.</li>
</ul>

<h2 id="what-is-the-future-roadmap">What is the future roadmap?</h2>

<ul class="task-list">
  <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />Implement <strong>AI opponent</strong> (random move / minimax)</li>
  <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />Add menu improvements and game state polish</li>
  <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" /><strong>Online multiplayer</strong> (future stretch goal)</li>
</ul>]]></content><author><name>Email me at</name><email>gls.prasadraju@gmail.com</email></author><category term="Python" /><category term="Pygame" /><category term="Game Development" /><category term="Pixel Art" /><summary type="html"><![CDATA[A graphical, pixel-art style Tic-Tac-Toe game built with Python and Pygame. It features classic two-player action with automated win detection and particle effects.]]></summary></entry></feed>