<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Life Notes</title><link>https://hariharan409.github.io/life-notes/tools/</link><description>Recent content on Life Notes</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://hariharan409.github.io/life-notes/tools/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://hariharan409.github.io/life-notes/tools/eslint/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hariharan409.github.io/life-notes/tools/eslint/</guid><description>&lt;h1 id="-eslint"&gt;🔧 ESLint&lt;a class="anchor" href="#-eslint"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;A static code analysis tool for JavaScript and TypeScript. Catches bugs, enforces code style, and flags bad patterns — before you run the code.&lt;/p&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2 id="-install"&gt;📦 Install&lt;a class="anchor" href="#-install"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Install locally in a project (recommended)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install --save-dev eslint
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Initialize config (interactive setup)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npx eslint --init&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote class='book-hint '&gt;
&lt;p&gt;⚠️ As of ESLint v9, the config format changed from &lt;code&gt;.eslintrc.*&lt;/code&gt; to &lt;code&gt;eslint.config.js&lt;/code&gt; (flat config). Most tutorials online still show the old format — check the version.&lt;/p&gt;</description></item><item><title/><link>https://hariharan409.github.io/life-notes/tools/genspark-ai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hariharan409.github.io/life-notes/tools/genspark-ai/</guid><description>&lt;h1 id="-genspark-ai"&gt;🔧 Genspark AI&lt;a class="anchor" href="#-genspark-ai"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;An AI-powered agent workspace that can generate presentations, research reports, spreadsheets, and colorful documents — all from a prompt. No installation required, runs in the browser.&lt;/p&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2 id="-install"&gt;📦 Install&lt;a class="anchor" href="#-install"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;No installation needed. It&amp;rsquo;s a web app.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;https://genspark.ai&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sign in with Google or email. Free tier available.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-core-use-cases"&gt;✅ Core Use Cases&lt;a class="anchor" href="#-core-use-cases"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Generate visually rich &lt;strong&gt;presentations / slides&lt;/strong&gt; from a text prompt&lt;/li&gt;
&lt;li&gt;Create &lt;strong&gt;research reports&lt;/strong&gt; that synthesize multiple sources&lt;/li&gt;
&lt;li&gt;Build &lt;strong&gt;spreadsheets&lt;/strong&gt; with AI-filled data&lt;/li&gt;
&lt;li&gt;Generate &lt;strong&gt;colorful, structured documents&lt;/strong&gt; for sharing with teams&lt;/li&gt;
&lt;li&gt;Use AI &lt;strong&gt;agents&lt;/strong&gt; to complete multi-step tasks on your behalf&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-key-usage"&gt;🔑 Key Usage&lt;a class="anchor" href="#-key-usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="1-create-a-presentation"&gt;1. Create a Presentation&lt;a class="anchor" href="#1-create-a-presentation"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Go to &lt;a href="https://genspark.ai"&gt;genspark.ai&lt;/a&gt;&lt;/p&gt;</description></item><item><title/><link>https://hariharan409.github.io/life-notes/tools/husky/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hariharan409.github.io/life-notes/tools/husky/</guid><description>&lt;h1 id="-husky"&gt;🔧 Husky&lt;a class="anchor" href="#-husky"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;A tool that makes git hooks easy to share across a team. Hooks are stored in the repo (&lt;code&gt;.husky/&lt;/code&gt;) and automatically activated when anyone runs &lt;code&gt;npm install&lt;/code&gt; — no manual &lt;code&gt;git config&lt;/code&gt; needed.&lt;/p&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2 id="-install"&gt;📦 Install&lt;a class="anchor" href="#-install"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install --save-dev husky
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npx husky init&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;husky init&lt;/code&gt; does two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Adds a &lt;code&gt;prepare&lt;/code&gt; script to &lt;code&gt;package.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Creates a default &lt;code&gt;.husky/pre-commit&lt;/code&gt; file&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="-core-use-cases"&gt;✅ Core Use Cases&lt;a class="anchor" href="#-core-use-cases"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Run linters before every commit (e.g. markdownlint, ESLint)&lt;/li&gt;
&lt;li&gt;Run tests before pushing&lt;/li&gt;
&lt;li&gt;Enforce commit message format (with &lt;code&gt;commitlint&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Ensure no contributor can accidentally skip hooks — hook setup is automatic via &lt;code&gt;npm install&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-key-usage"&gt;🔑 Key Usage&lt;a class="anchor" href="#-key-usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="how-it-works"&gt;How it works&lt;a class="anchor" href="#how-it-works"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone &amp;lt;repo&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd &amp;lt;repo&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── triggers &amp;#34;prepare&amp;#34; script in package.json
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── runs &amp;#34;git submodule update --init --recursive &amp;amp;&amp;amp; husky&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── sets git core.hooksPath = .husky/_ automatically&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;No manual &lt;code&gt;git config&lt;/code&gt; needed — ever.&lt;/p&gt;</description></item><item><title/><link>https://hariharan409.github.io/life-notes/tools/markdownlint-cli2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hariharan409.github.io/life-notes/tools/markdownlint-cli2/</guid><description>&lt;h1 id="-markdownlint-cli2"&gt;🔧 markdownlint-cli2&lt;a class="anchor" href="#-markdownlint-cli2"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;A fast CLI tool to lint Markdown files against a set of rules. Catches bad formatting, missing code block languages, trailing spaces, and inconsistent structure — before they reach GitHub.&lt;/p&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2 id="-install"&gt;📦 Install&lt;a class="anchor" href="#-install"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install --save-dev markdownlint-cli2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Requires Node.js. No global install needed — use via &lt;code&gt;npx&lt;/code&gt; or &lt;code&gt;npm run&lt;/code&gt; scripts.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-core-use-cases"&gt;✅ Core Use Cases&lt;a class="anchor" href="#-core-use-cases"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Enforce consistent Markdown formatting across all &lt;code&gt;.md&lt;/code&gt; files&lt;/li&gt;
&lt;li&gt;Block bad commits via a git pre-commit hook (via Husky)&lt;/li&gt;
&lt;li&gt;Fail CI/CD pipelines on unformatted Markdown&lt;/li&gt;
&lt;li&gt;Auto-fix many common issues with &lt;code&gt;--fix&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-key-commands--usage"&gt;🔑 Key Commands / Usage&lt;a class="anchor" href="#-key-commands--usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="check-all-markdown-files"&gt;Check all Markdown files&lt;a class="anchor" href="#check-all-markdown-files"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm run lint:md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# or directly:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npx markdownlint-cli2 &lt;span style="color:#e6db74"&gt;&amp;#34;**/*.md&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;#node_modules&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;#themes&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;#public&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Scans all &lt;code&gt;.md&lt;/code&gt; files, prints violations with file + line number.&lt;/p&gt;</description></item></channel></rss>