<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Hem Bahadur Pun</title>
    <description>The latest articles on Forem by Hem Bahadur Pun (@hempun10).</description>
    <link>https://forem.com/hempun10</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1007310%2Fe6410cc8-8a43-4f3e-abea-3b5cfb0697b4.png</url>
      <title>Forem: Hem Bahadur Pun</title>
      <link>https://forem.com/hempun10</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/hempun10"/>
    <language>en</language>
    <item>
      <title>I Built a CLI That Remembers What I Was Working On (So I Don't Have To)</title>
      <dc:creator>Hem Bahadur Pun</dc:creator>
      <pubDate>Sat, 14 Feb 2026 19:39:27 +0000</pubDate>
      <link>https://forem.com/hempun10/i-built-a-cli-that-remembers-what-i-was-working-on-so-i-dont-have-to-4p1j</link>
      <guid>https://forem.com/hempun10/i-built-a-cli-that-remembers-what-i-was-working-on-so-i-dont-have-to-4p1j</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Every Sunday morning, same story. Standup starts, someone asks "what did you work on last week?" and I'm sitting there scrolling through my git log trying to reconstruct what I did three days ago. Then my manager asks for a weekly summary. Then I need a PR description. Then I switch branches and completely forget what I was doing before lunch.&lt;/p&gt;

&lt;p&gt;I was sick of it. So I built &lt;strong&gt;DevDaily AI&lt;/strong&gt; — a CLI tool that acts as your developer memory.&lt;/p&gt;

&lt;p&gt;One command, and it reads your git history, analyzes your commits, branches, diffs, PRs, ticket references — and generates a standup, a PR description, or a weekly summary. But the part I'm most proud of? It builds a &lt;strong&gt;persistent local journal&lt;/strong&gt; of your work. Every command you run, every branch you switch, every commit you make — DevDaily silently captures a snapshot. So when you come back on Monday morning and can't remember what you were doing Friday afternoon:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And it tells you. Exactly where you left off. Which files you were editing. What branch you were on. What tickets you were working on.&lt;/p&gt;

&lt;p&gt;No cloud. No telemetry. Everything stays on your machine at &lt;code&gt;~/.config/devdaily/journal/&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The interesting part — it's powered by GitHub Copilot CLI
&lt;/h3&gt;

&lt;p&gt;DevDaily doesn't call OpenAI or Anthropic APIs directly. All the AI generation is delegated to &lt;strong&gt;GitHub Copilot CLI&lt;/strong&gt;. And here's why that matters — Copilot CLI isn't just one model. It's a &lt;strong&gt;multi-model agentic platform&lt;/strong&gt;. It defaults to Claude Sonnet 4.5, but you can switch to Claude Sonnet 4, GPT-5, or whatever model GitHub adds next — all through your existing GitHub account. No separate API keys, no vendor SDKs, no billing headaches. One integration, multiple AI vendors.&lt;/p&gt;

&lt;p&gt;DevDaily calls it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;copilot &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Given these 14 commits across 3 branches, generate a standup report..."&lt;/span&gt; &lt;span class="nt"&gt;--silent&lt;/span&gt; &lt;span class="nt"&gt;--no-ask-user&lt;/span&gt; &lt;span class="nt"&gt;--model&lt;/span&gt; claude-sonnet-4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The &lt;code&gt;--silent&lt;/code&gt; and &lt;code&gt;--no-ask-user&lt;/code&gt; flags let DevDaily use Copilot CLI as a headless AI backend. Users can swap models with a single flag change. And when GitHub adds new models to Copilot CLI, DevDaily gets them for free — zero code changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I focused on for this challenge
&lt;/h3&gt;

&lt;p&gt;The core features (standup, PR, weekly) already existed, but during this challenge I built out the pieces that make DevDaily actually useful day-to-day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Snapshot hooks&lt;/strong&gt; — Opt-in &lt;code&gt;post-commit&lt;/code&gt; and &lt;code&gt;post-checkout&lt;/code&gt; git hooks that silently capture work snapshots. Install with &lt;code&gt;devdaily init --git-hooks&lt;/code&gt;, forget about it, and your journal fills up automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clipboard integration fix&lt;/strong&gt; — The &lt;code&gt;--format&lt;/code&gt; flag was broken. It was accepted but never applied — clipboard always copied raw markdown. Fixed the formatter pipeline so &lt;code&gt;--format slack&lt;/code&gt; actually converts to Slack mrkdwn before copying.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output formatter&lt;/strong&gt; — Proper conversion between markdown, plain text, Slack mrkdwn, and structured JSON. The Slack converter was tricky — you need to convert &lt;code&gt;**bold**&lt;/code&gt; to &lt;code&gt;*bold*&lt;/code&gt; without eating &lt;code&gt;*italic*&lt;/code&gt;, so I built a Unicode placeholder system that protects code blocks during transformation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhook notifications&lt;/strong&gt; — &lt;code&gt;devdaily standup --send&lt;/code&gt; pushes your standup to Slack or Discord. Plus &lt;code&gt;--test-webhook&lt;/code&gt; to validate your setup without spamming the channel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;724 tests&lt;/strong&gt; — Comprehensive test suite covering everything from hook installation idempotency to formatter edge cases.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/hempun10/devdaily" rel="noopener noreferrer"&gt;github.com/hempun10/devdaily&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Install:&lt;/strong&gt; &lt;code&gt;npm install -g devdaily-ai&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  The Setup — &lt;code&gt;devdaily init&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;First time? The interactive wizard gets you going in under a minute. It sets up your shell alias (&lt;code&gt;dd&lt;/code&gt;), tab completions, notification webhooks, and git hooks — all in one flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It asks what you want to configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dd&lt;/code&gt; shell alias (so &lt;code&gt;dd standup&lt;/code&gt; works)&lt;/li&gt;
&lt;li&gt;Shell completions (tab-complete all commands)&lt;/li&gt;
&lt;li&gt;Slack/Discord webhook setup&lt;/li&gt;
&lt;li&gt;Git hooks for auto-snapshots&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick what you need, skip what you don't. You can always come back with &lt;code&gt;devdaily init --notifications&lt;/code&gt; or &lt;code&gt;devdaily init --git-hooks&lt;/code&gt; to set up individual pieces later.&lt;/p&gt;

&lt;h3&gt;
  
  
  System Check
&lt;/h3&gt;

&lt;p&gt;First thing after install — &lt;code&gt;devdaily doctor&lt;/code&gt; makes sure everything is set up, including &lt;strong&gt;Copilot CLI&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ehgrpsco8ce3jsy8o3f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ehgrpsco8ce3jsy8o3f.png" alt="devdaily standup output" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Standup Generation — &lt;code&gt;devdaily standup&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The bread and butter. One command, your entire standup, copied to clipboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10ttun44rbo72tc2uitl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10ttun44rbo72tc2uitl.png" alt=" " width="800" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Need the last 3 days? &lt;code&gt;devdaily standup --days 3&lt;/code&gt;. Working on a specific ticket? &lt;code&gt;devdaily standup --ticket PROJ-123&lt;/code&gt; pulls in the ticket context from your PM tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Format Options — The Fix That Matters
&lt;/h3&gt;

&lt;p&gt;Before this challenge, &lt;code&gt;--format slack&lt;/code&gt; was silently ignored. Now it actually works — and the formatted version is what gets copied to your clipboard.&lt;br&gt;
&lt;code&gt;devdaily standup --format slack&lt;/code&gt; gives you Slack-ready mrkdwn — headers become bold, lists become bullets, and markdown syntax is properly converted:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1k8hi1zk1ozga1aa5w73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1k8hi1zk1ozga1aa5w73.png" alt="Standup generated with slack format" width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here's what it looks like when it actually lands in Slack:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5w60mu8vw7auw9weunw3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5w60mu8vw7auw9weunw3.png" alt="Formatted standup in slack" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;devdaily standup --format json&lt;/code&gt; gives you structured data — perfect for piping into dashboards or automation scripts:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm24ckuf8o3qlc3yrzlb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm24ckuf8o3qlc3yrzlb6.png" alt="devdaily standup JSON format output" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And &lt;code&gt;--format plain&lt;/code&gt; strips all markdown for clean paste into emails or chat.&lt;/p&gt;
&lt;h3&gt;
  
  
  Webhook Notifications — &lt;code&gt;devdaily standup --send&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Don't want to paste your standup manually? Just send it directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily standup &lt;span class="nt"&gt;--send&lt;/span&gt;       &lt;span class="c"&gt;# Sends to all configured channels&lt;/span&gt;
devdaily standup &lt;span class="nt"&gt;--slack&lt;/span&gt;      &lt;span class="c"&gt;# Slack only&lt;/span&gt;
devdaily standup &lt;span class="nt"&gt;--discord&lt;/span&gt;    &lt;span class="c"&gt;# Discord only&lt;/span&gt;
devdaily standup &lt;span class="nt"&gt;--test-webhook&lt;/span&gt;  &lt;span class="c"&gt;# Test your setup without spamming&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DevDaily formats the payload specifically for each platform — Slack gets proper &lt;code&gt;mrkdwn&lt;/code&gt; blocks with headers, dividers, and ticket links. Discord gets rich embeds with color-coded types (green for standups, blue for PRs, purple for weekly summaries). Set up your webhooks once with &lt;code&gt;devdaily init --notifications&lt;/code&gt; and forget about it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Context Recovery — &lt;code&gt;devdaily context&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This is the feature that started the whole project. You come back from lunch, a meeting, or a weekend, and you have no idea what you were doing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily context              &lt;span class="c"&gt;# Where did I leave off?&lt;/span&gt;
devdaily context &lt;span class="nt"&gt;--ai&lt;/span&gt;         &lt;span class="c"&gt;# AI-powered summary of your recent work&lt;/span&gt;
devdaily context &lt;span class="nt"&gt;--branches&lt;/span&gt;   &lt;span class="c"&gt;# Show all active branches and their status&lt;/span&gt;
devdaily context &lt;span class="nt"&gt;--all-projects&lt;/span&gt;  &lt;span class="c"&gt;# Context across all your repos&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It pulls from your local journal — every snapshot captured by your git hooks, every standup you ran, every PR you generated — and reconstructs what you were doing. Add &lt;code&gt;--ai&lt;/code&gt; and Copilot CLI generates a natural language summary: "You were in the middle of refactoring the auth middleware. Your last commit touched &lt;code&gt;src/services/auth.ts&lt;/code&gt; and you had an open PR against &lt;code&gt;develop&lt;/code&gt;."&lt;/p&gt;

&lt;h3&gt;
  
  
  Work Search — &lt;code&gt;devdaily recall&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;"When did I last touch the auth code?" — a question I used to answer by grepping through git logs. Now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily recall &lt;span class="s2"&gt;"auth"&lt;/span&gt;                &lt;span class="c"&gt;# Search by keyword&lt;/span&gt;
devdaily recall &lt;span class="nt"&gt;--file&lt;/span&gt; src/auth.ts    &lt;span class="c"&gt;# When was this file changed?&lt;/span&gt;
devdaily recall &lt;span class="nt"&gt;--tag&lt;/span&gt; feature         &lt;span class="c"&gt;# Find snapshots tagged "feature"&lt;/span&gt;
devdaily recall PROJ-123              &lt;span class="c"&gt;# Find all work related to a ticket&lt;/span&gt;
devdaily recall login &lt;span class="nt"&gt;--ai&lt;/span&gt;            &lt;span class="c"&gt;# AI summary of search results&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It fuzzy-searches across commit messages, branch names, notes, and tags in your journal. Add &lt;code&gt;--ai&lt;/code&gt; and Copilot CLI summarizes the results: "You worked on auth-related code across 3 sessions over the last 2 weeks, primarily in &lt;code&gt;src/services/auth.ts&lt;/code&gt; and &lt;code&gt;src/middleware/rate-limit.ts&lt;/code&gt;."&lt;/p&gt;

&lt;h3&gt;
  
  
  Snapshot Journal — The Memory
&lt;/h3&gt;

&lt;p&gt;This is the feature I'm most proud of. &lt;code&gt;devdaily snapshot --list&lt;/code&gt; shows your work timeline — every commit, branch switch, and PR captured automatically:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femfqhuqbqlex3qngc6yz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femfqhuqbqlex3qngc6yz.png" alt="devdaily snapshot list output" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And &lt;code&gt;devdaily snapshot --stats&lt;/code&gt; to see your journal health:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2h6cbmrtey3djondn5l8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2h6cbmrtey3djondn5l8.png" alt="devdaily snapshot stats output" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also manually capture snapshots with notes and tags:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily snapshot &lt;span class="nt"&gt;--note&lt;/span&gt; &lt;span class="s2"&gt;"before big refactor"&lt;/span&gt; &lt;span class="nt"&gt;--tag&lt;/span&gt; release
devdaily snapshot &lt;span class="nt"&gt;--light&lt;/span&gt;    &lt;span class="c"&gt;# Quick capture, no PR/ticket fetch&lt;/span&gt;
devdaily snapshot &lt;span class="nt"&gt;--prune&lt;/span&gt; 90 &lt;span class="c"&gt;# Clean up entries older than 90 days&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  PR Generation
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;devdaily pr&lt;/code&gt; auto-detects your PR template (&lt;code&gt;.github/PULL_REQUEST_TEMPLATE.md&lt;/code&gt;), analyzes the diff, and generates the whole thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily &lt;span class="nb"&gt;pr&lt;/span&gt;                   &lt;span class="c"&gt;# Generate + interactive menu&lt;/span&gt;
devdaily &lt;span class="nb"&gt;pr&lt;/span&gt; &lt;span class="nt"&gt;--create&lt;/span&gt;          &lt;span class="c"&gt;# Create PR directly on GitHub&lt;/span&gt;
devdaily &lt;span class="nb"&gt;pr&lt;/span&gt; &lt;span class="nt"&gt;--draft&lt;/span&gt;           &lt;span class="c"&gt;# Create as draft&lt;/span&gt;
devdaily &lt;span class="nb"&gt;pr&lt;/span&gt; &lt;span class="nt"&gt;--interactive&lt;/span&gt;     &lt;span class="c"&gt;# Pick labels, reviewers, assignees&lt;/span&gt;
devdaily &lt;span class="nb"&gt;pr&lt;/span&gt; &lt;span class="nt"&gt;--ticket&lt;/span&gt; PROJ-456 &lt;span class="c"&gt;# Include ticket context in description&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It detects the PR type from your commits (feature, bugfix, breaking change), generates a conventional commit title, links related issues, and gives you an interactive menu: copy to clipboard, create on GitHub, create as draft, or configure labels and reviewers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28pekkgwmf4q4zhzi3gy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28pekkgwmf4q4zhzi3gy.png" alt=" " width="800" height="755"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3v1m3jbkpoz9abf8nam7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3v1m3jbkpoz9abf8nam7.png" alt=" " width="800" height="858"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i95d2a8uwslsla6n7rv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i95d2a8uwslsla6n7rv.png" alt=" " width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Weekly Summary — &lt;code&gt;devdaily week&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Every Friday (or whenever your manager asks):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily week                 &lt;span class="c"&gt;# This week's summary&lt;/span&gt;
devdaily week &lt;span class="nt"&gt;--last&lt;/span&gt;          &lt;span class="c"&gt;# Last week&lt;/span&gt;
devdaily week &lt;span class="nt"&gt;--all-projects&lt;/span&gt;  &lt;span class="c"&gt;# Cross-project summary from your journal&lt;/span&gt;
devdaily week &lt;span class="nt"&gt;--save&lt;/span&gt;          &lt;span class="c"&gt;# Save to journal for future reference&lt;/span&gt;
devdaily week &lt;span class="nt"&gt;--json&lt;/span&gt;          &lt;span class="c"&gt;# Machine-readable stats&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--all-projects&lt;/code&gt; flag is where the journal really shines — it pulls snapshots from every repo you've worked in and generates one unified weekly summary. No more scrambling across repos trying to remember what you shipped.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Management Integration — &lt;code&gt;devdaily connect&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;DevDaily integrates with &lt;strong&gt;GitHub Issues&lt;/strong&gt;, &lt;strong&gt;Jira&lt;/strong&gt;, and &lt;strong&gt;Linear&lt;/strong&gt;. Connect your PM tool once, and standups, PRs, and weekly summaries automatically pull in ticket context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily connect              &lt;span class="c"&gt;# Interactive setup&lt;/span&gt;
devdaily connect &lt;span class="nt"&gt;--test&lt;/span&gt;       &lt;span class="c"&gt;# Verify your connection works&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It shows credential status, tests the connection, and verifies it can fetch tickets. Once connected, DevDaily extracts ticket IDs from your commit messages and branch names (&lt;code&gt;PROJ-123&lt;/code&gt;, &lt;code&gt;#42&lt;/code&gt;, &lt;code&gt;LINEAR-456&lt;/code&gt;), fetches the ticket details, and includes them in your AI-generated output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration — Global + Project Level
&lt;/h3&gt;

&lt;p&gt;DevDaily has a layered config system. Global config lives at &lt;code&gt;~/.config/devdaily/config.json&lt;/code&gt;, project config lives at &lt;code&gt;.devdaily.json&lt;/code&gt; in your repo root. Project config overrides global — so you can have different settings per repo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;devdaily config &lt;span class="nt"&gt;--show&lt;/span&gt;        &lt;span class="c"&gt;# See current merged configuration&lt;/span&gt;
devdaily config &lt;span class="nt"&gt;--edit&lt;/span&gt;        &lt;span class="c"&gt;# Open in your editor&lt;/span&gt;
devdaily config &lt;span class="nt"&gt;--path&lt;/span&gt;        &lt;span class="c"&gt;# Show config file locations&lt;/span&gt;
devdaily config &lt;span class="nt"&gt;--reset&lt;/span&gt;       &lt;span class="c"&gt;# Reset to defaults&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The config file has JSON Schema support (&lt;code&gt;$schema&lt;/code&gt; field), so you get autocompletion and validation in VS Code or any editor that supports it. You can configure everything — output format, default branch, standup sections, PR defaults (reviewers, labels, assignees), notification webhooks, theming, keyboard shortcuts, and more.&lt;/p&gt;

&lt;p&gt;Here's a taste of what &lt;code&gt;.devdaily.json&lt;/code&gt; looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"$schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://raw.githubusercontent.com/hempun10/devdaily/main/schemas/devdaily.schema.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"output"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"markdown"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"copyToClipboard"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"standup"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"defaultDays"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"sections"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"completed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"in-progress"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"blockers"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pr"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"defaultBase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"autoLabels"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"titleFormat"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"conventional"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"notifications"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"slack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"discord"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"projectManagement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"github"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;I used GitHub Copilot CLI to build this entire project, and I also built DevDaily to use Copilot CLI under the hood. So I got to experience it from both sides — as a developer using it to code, and as a tool author integrating with it programmatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Copilot CLI to build DevDaily
&lt;/h3&gt;

&lt;p&gt;The thing that surprised me most was how good Copilot CLI is at &lt;strong&gt;understanding existing codebases&lt;/strong&gt;. I could just launch &lt;code&gt;copilot&lt;/code&gt; in my project directory and say "the --format flag on the standup command isn't working, the output is always raw markdown even when I pass --format slack" — and it would read through my source files, trace the execution path through the command handler, and come back with: "The formatter is never called before the clipboard copy. You need to apply &lt;code&gt;formatOutput()&lt;/code&gt; before passing the text to &lt;code&gt;clipboardy&lt;/code&gt;."&lt;/p&gt;

&lt;p&gt;That's not autocomplete. That's actual debugging.&lt;/p&gt;

&lt;p&gt;Here are the specific moments where Copilot CLI made a real difference:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Slack formatter regex problem.&lt;/strong&gt; Converting markdown to Slack mrkdwn sounds simple until you realize that markdown uses &lt;code&gt;**text**&lt;/code&gt; for bold and &lt;code&gt;*text*&lt;/code&gt; for italic, while Slack uses &lt;code&gt;*text*&lt;/code&gt; for bold and &lt;code&gt;_text_&lt;/code&gt; for italic. If you naively convert &lt;code&gt;**bold**&lt;/code&gt; → &lt;code&gt;*bold*&lt;/code&gt;, you'll break any &lt;code&gt;*italic*&lt;/code&gt; text in the same document. I described this edge case to Copilot CLI and it suggested the Unicode placeholder approach — stash code blocks and inline code using private-use-area characters (&lt;code&gt;\uE000&lt;/code&gt;, &lt;code&gt;\uE001&lt;/code&gt;) before running the bold/italic conversions, then restore them after. It worked perfectly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git hook portability.&lt;/strong&gt; The auto-snapshot hooks needed to be POSIX-compatible (&lt;code&gt;#!/bin/sh&lt;/code&gt;, not &lt;code&gt;#!/bin/bash&lt;/code&gt;), run the snapshot in the background so they don't slow down commits, and append to existing hooks instead of overwriting them. I was going back and forth on the right approach and Copilot CLI helped me think through the edge cases — what if the user already has a &lt;code&gt;post-commit&lt;/code&gt; hook? What if they install twice? What if they remove hooks but there's other content in the file? The resulting implementation handles all of these cleanly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test scaffolding.&lt;/strong&gt; 724 tests is a lot. Copilot CLI was incredibly helpful for scaffolding the repetitive parts — especially the hook installation tests where I needed to cover idempotency, concurrent installations, force overwrite, appending to existing hooks, and clean removal. I'd describe the scenario, it would generate the test structure, and I'd refine the assertions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-source cleanup.&lt;/strong&gt; Before publishing, I asked Copilot CLI to audit the repo for anything that shouldn't be public — hardcoded paths, internal docs, personal information. It went through every file and flagged things I would have missed.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I love about Copilot CLI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Multi-model flexibility.&lt;/strong&gt; Copilot CLI isn't locked to one AI vendor. It defaults to Claude Sonnet 4.5, but you can switch to Claude Sonnet 4, GPT-5, or other models with &lt;code&gt;/model&lt;/code&gt; or &lt;code&gt;--model&lt;/code&gt;. Different models have different strengths — I found myself switching models depending on the task. That flexibility is something you don't get when you're locked into a single vendor's API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agentic capabilities.&lt;/strong&gt; This isn't just prompt-in, response-out. Copilot CLI can read files, edit code, run shell commands, create GitHub issues — it's a full coding agent in the terminal. When I asked it to "add error handling to the webhook notification flow," it read the existing code, identified the gaps, wrote the try/catch blocks, and even added the corresponding test cases. All from one prompt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Staying in the terminal.&lt;/strong&gt; I'm a CLI person. Having an AI coding agent that lives where I already work — no browser tab, no VS Code sidebar, just my terminal — felt natural. I could go from writing code to asking Copilot CLI a question and back without any context switch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP extensibility.&lt;/strong&gt; Copilot CLI ships with GitHub's MCP server built in, so it already knows how to work with my repos, issues, and PRs. When I told it to create issues for the remaining work items, it created them directly on my GitHub project board. No copy-pasting, no switching to the browser.&lt;/p&gt;

&lt;h3&gt;
  
  
  The meta moment
&lt;/h3&gt;

&lt;p&gt;There's something satisfying about using Copilot CLI to build a tool that wraps Copilot CLI. DevDaily calls &lt;code&gt;copilot -p &amp;lt;prompt&amp;gt; --silent --no-ask-user&lt;/code&gt; to generate standups and PR descriptions — it uses Copilot CLI as a headless, multi-model AI backend. And the tool itself was built with Copilot CLI as my development partner.&lt;/p&gt;

&lt;p&gt;Would I have been able to build DevDaily without Copilot CLI? Sure. Would I have shipped this much — snapshot hooks, formatter pipeline, clipboard fix, webhook integration, 724 tests, open-source prep — in the same timeframe? Not a chance. Copilot CLI didn't just speed things up; it caught bugs I would have missed and thought through edge cases I hadn't considered.&lt;/p&gt;




&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/hempun10/devdaily" rel="noopener noreferrer"&gt;github.com/hempun10/devdaily&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm:&lt;/strong&gt; &lt;code&gt;npm install -g devdaily-ai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License:&lt;/strong&gt; MIT&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;p&gt;TypeScript · Node.js · GitHub Copilot CLI · Commander.js · simple-git · clipboardy · Zod · Vitest · tsup · GitHub Actions&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>From Extra Syllabus to Career</title>
      <dc:creator>Hem Bahadur Pun</dc:creator>
      <pubDate>Mon, 13 May 2024 14:22:08 +0000</pubDate>
      <link>https://forem.com/hempun10/journey-from-novice-to-explorer-35m7</link>
      <guid>https://forem.com/hempun10/journey-from-novice-to-explorer-35m7</guid>
      <description>&lt;p&gt;I still remember the day it was 19th of July 2022 I learned about Web Development (HTML, CSS) in my college at high school. I was majoring in commerce then, and computer science was an extra syllabus added by our high school. But for me, this extra subject was my favorite. Then, Like everyone, I started researching the web development of this topic on YouTube. &lt;/p&gt;

&lt;p&gt;At that time there weren't as many tutors on youtube talking about web dev. But from somewhere I got to land on the channel named &lt;a href="https://www.codewithharry.com/" rel="noopener noreferrer"&gt;Code with Harry&lt;/a&gt; as I was from Nepal Hindi language was of little use to me. So, I started learning about web development from his &lt;a href="https://www.codewithharry.com/videos/web-development-in-hindi-1/" rel="noopener noreferrer"&gt;playlist&lt;/a&gt;. His teaching style was super fun and the way he used to clear the concept.&lt;/p&gt;

&lt;p&gt;As I was going at a good pace. Then my high school board examination was waiting for me 😌. Due to the pressure of the examination, I got distracted and all the topics were fussed from my mind.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkho10gqfr3n5xx3287xf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkho10gqfr3n5xx3287xf.png" alt="😂" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After around 4 months from nowhere. Again, I got the motivation to start the journey again. Then, I rejoined the playlist. Then, after around 2 months I got a bit of confidence in topics like HTML, CSS, and Internet stuff. Then built some projects &lt;a href="https://hempun10.github.io/htmlrevisioncv/" rel="noopener noreferrer"&gt;CV&lt;/a&gt;, &lt;a href="https://hempun10.github.io/foxdesignnp/index.html" rel="noopener noreferrer"&gt;Course Landing Page&lt;/a&gt;, &lt;a href="https://hempun10.github.io/hostinger_redesign/" rel="noopener noreferrer"&gt;Hostinger Landing Page Clone&lt;/a&gt;. I think I lost a lot of my time learning CSS which was my second mistake. After that, I started learning about JS again from Harry Bhai. As I don't have any prior knowledge of programming at that time. It usually, takes a bit more time to catch the concepts. At that time I learned about many CS kinds of stuff and programming concepts like types of Programming Paradigms, Classes, Functions, Objects, Arrays, Variables, Loops, etc. &lt;br&gt;
Then I started building some projects from YT &lt;a href="https://quote-generator-tweet.netlify.app/" rel="noopener noreferrer"&gt;Quote Generator&lt;/a&gt;, &lt;a href="https://hempun10.github.io/BookMark-Kepper/" rel="noopener noreferrer"&gt;Book Mark Keeper&lt;/a&gt;, &lt;a href="https://hempun10.github.io/Music-Player/" rel="noopener noreferrer"&gt;Music Player&lt;/a&gt;, &lt;a href="https://hempun10.github.io/Joke_Teller/" rel="noopener noreferrer"&gt;Joke Teller&lt;/a&gt; &lt;br&gt;
By building these projects I feel a bit comfortable with javascript.&lt;/p&gt;

&lt;p&gt;At that time I had also enrolled for my Bachelor's Degree in Computer science side-wise I was constantly learning and expiring the stuff. There comes my third mistake being stuck in tutorial hell. Then, I decided to build some projects on my own and I accomplished &lt;a href="https://hempun10.github.io/Video-player/" rel="noopener noreferrer"&gt;Video Player&lt;/a&gt;, &lt;a href="https://hempun10.github.io/form-Validator/" rel="noopener noreferrer"&gt;Form Validator&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Then, I was looking to be involved in some real-world project, and coincidently. At the end of the first semester, I got a chance to intern as a front-end developer through my college coding program. On day one, I felt like like I didn't know anything they asked me about do I know swagger, redux, react query, and many more? I felt literally what are they talking about. I just had a basic knowledge of React JS. Then, they asked me to research about the terms they just asked me and I opened YouTube a typed How to....? Then one of the senior devs of that organization told me I should try to read docs, and blogs more rather than Youtube. After around 2 weeks I started getting what they asked me about and I also started involving in their projects. Some projects I was involved in were in &lt;a href="https://www.thriftstorenepal.com/" rel="noopener noreferrer"&gt;Thrif Store Nepal&lt;/a&gt;, and &lt;a href="https://everestbilling.com/" rel="noopener noreferrer"&gt;Billing Software&lt;/a&gt;. It has been a quite tough and fun journey up to now. From an extra syllabus to a career and passion for it. &lt;/p&gt;

&lt;p&gt;Summary&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistency is the key&lt;/li&gt;
&lt;li&gt;Don't get stuck into tutorial hell.&lt;/li&gt;
&lt;li&gt;Try a project-based learning approach.&lt;/li&gt;
&lt;li&gt;Make basic strong.&lt;/li&gt;
&lt;li&gt;If you want to grow don't stop learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: The above was my journey and learnings all the above words are from my mistakes and learnings.&lt;/p&gt;

&lt;p&gt;Looking for your feedback, Happy Learning 🙏🏻 &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>journey</category>
      <category>beginners</category>
      <category>passion</category>
    </item>
  </channel>
</rss>
