<?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>DEV Community: Senthil Pitchappan V</title>
    <description>The latest articles on DEV Community by Senthil Pitchappan V (@senthil_v).</description>
    <link>https://dev.to/senthil_v</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%2F671935%2F66c0a9e9-abc9-4422-8ef4-b04185d6d419.jpeg</url>
      <title>DEV Community: Senthil Pitchappan V</title>
      <link>https://dev.to/senthil_v</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/senthil_v"/>
    <language>en</language>
    <item>
      <title>I built a full Markdown IDE using Claude Opus 4. Live preview, AI assistant (BYOM), diagrams, workspaces all client-side, zero backend. No signup. No subscriptions. Just open and write. Try it now - https://v-senthil.github.io/mark-viwer/</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Sat, 21 Feb 2026 09:15:11 +0000</pubDate>
      <link>https://dev.to/senthil_v/i-built-a-full-markdown-ide-using-claude-opus-4-live-preview-ai-assistant-byom-diagrams-4c6c</link>
      <guid>https://dev.to/senthil_v/i-built-a-full-markdown-ide-using-claude-opus-4-live-preview-ai-assistant-byom-diagrams-4c6c</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/senthil_v/i-got-tired-of-tab-hell-just-to-write-documentation-so-i-built-this-47n4" class="crayons-story__hidden-navigation-link"&gt;I Got Tired of Tab Hell Just to Write Documentation - So I Built This&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/senthil_v" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F671935%2F66c0a9e9-abc9-4422-8ef4-b04185d6d419.jpeg" alt="senthil_v profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/senthil_v" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Senthil Pitchappan V
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Senthil Pitchappan V
                
              
              &lt;div id="story-author-preview-content-3272742" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/senthil_v" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F671935%2F66c0a9e9-abc9-4422-8ef4-b04185d6d419.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Senthil Pitchappan V&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/senthil_v/i-got-tired-of-tab-hell-just-to-write-documentation-so-i-built-this-47n4" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/senthil_v/i-got-tired-of-tab-hell-just-to-write-documentation-so-i-built-this-47n4" id="article-link-3272742"&gt;
          I Got Tired of Tab Hell Just to Write Documentation - So I Built This
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/markdown"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;markdown&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/senthil_v/i-got-tired-of-tab-hell-just-to-write-documentation-so-i-built-this-47n4#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://v-senthil.github.io/mark-viwer/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;v-senthil.github.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




</description>
      <category>opensource</category>
      <category>markdown</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Got Tired of Tab Hell Just to Write Documentation - So I Built This</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Sat, 21 Feb 2026 08:43:30 +0000</pubDate>
      <link>https://dev.to/senthil_v/i-got-tired-of-tab-hell-just-to-write-documentation-so-i-built-this-47n4</link>
      <guid>https://dev.to/senthil_v/i-got-tired-of-tab-hell-just-to-write-documentation-so-i-built-this-47n4</guid>
      <description>&lt;p&gt;&lt;strong&gt;The problem isn't Markdown. It's everything around Markdown.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You open VS Code to write a README. Then you need an AI assistant - new tab. Grammar check - another tab. You want a Mermaid diagram - different tool. Need a quick preview? Open another window. Managing multiple docs? Now you're juggling files across three apps.&lt;/p&gt;

&lt;p&gt;By the time you start writing, you've already lost 10 minutes and half your focus.&lt;/p&gt;

&lt;p&gt;I got tired of this. So I built &lt;strong&gt;Mark Viewer&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Mark Viewer?
&lt;/h2&gt;

&lt;p&gt;Mark Viewer is a &lt;strong&gt;zero-install, zero-backend Markdown IDE&lt;/strong&gt; that runs entirely in your browser. One URL. No signup. No subscriptions. No server dependencies.&lt;/p&gt;

&lt;p&gt;It's also available as a &lt;strong&gt;native desktop app&lt;/strong&gt; via Tauri - 18MB, not the 300MB Electron tax.&lt;/p&gt;

&lt;p&gt;It combines everything you need for serious documentation work into one surface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full-featured editor&lt;/li&gt;
&lt;li&gt;Live preview&lt;/li&gt;
&lt;li&gt;AI assistant&lt;/li&gt;
&lt;li&gt;Diagrams&lt;/li&gt;
&lt;li&gt;File management&lt;/li&gt;
&lt;li&gt;Analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No context switching. No tab hell.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Feature Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ⚡ Live Edit + Live Preview
&lt;/h3&gt;

&lt;p&gt;The editor runs on &lt;strong&gt;CodeMirror 6&lt;/strong&gt; - the same engine powering modern code editors. Line numbers, bracket matching, multiple themes, Vim mode if you're that person.&lt;/p&gt;

&lt;p&gt;The preview renders in real-time with full GitHub Flavored Markdown support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Syntax highlighting&lt;/strong&gt; for 180+ languages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mermaid diagrams&lt;/strong&gt; - flowcharts, sequence diagrams, ERDs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PlantUML&lt;/strong&gt; - for architects who refuse to give up UML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KaTeX math&lt;/strong&gt; - inline &lt;code&gt;$x^2$&lt;/code&gt; and display &lt;code&gt;$$\int_0^1 f(x)dx$$&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Footnotes, task lists, tables, emoji&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No separate preview window. No manual refresh. What you type is what you see.&lt;/p&gt;




&lt;h3&gt;
  
  
  🤖 AI-Powered Assistant - Bring Your Own Model
&lt;/h3&gt;

&lt;p&gt;This is where it gets interesting.&lt;/p&gt;

&lt;p&gt;Mark Viewer doesn't lock you into one AI provider. You bring your own:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Models&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;GPT-4o, GPT-4 Turbo, GPT-3.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Gemini 2.0 Flash, 1.5 Pro&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ollama&lt;/td&gt;
&lt;td&gt;Any local model (Llama, Mistral, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;Any OpenAI-compatible endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;11 Quick Actions&lt;/strong&gt; work on your current selection or full document:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Continue Writing&lt;/strong&gt; - extend naturally, matching your tone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Summarize&lt;/strong&gt; - condense key points&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix Grammar&lt;/strong&gt; - correct errors silently&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rewrite&lt;/strong&gt; - improve clarity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make Concise&lt;/strong&gt; - cut the fluff&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplify&lt;/strong&gt; - reduce reading level&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expand&lt;/strong&gt; - add depth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate Outline&lt;/strong&gt; - structure from chaos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explain&lt;/strong&gt; - break down complex content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translate&lt;/strong&gt; - preserve Markdown formatting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom&lt;/strong&gt; - your own prompt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI operates &lt;strong&gt;in context&lt;/strong&gt;. No copy-pasting to ChatGPT. No losing your place. Select text → Run action → Insert or replace. Done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy note:&lt;/strong&gt; Your API keys are AES-256 encrypted in IndexedDB. Zero telemetry. Your data never leaves your browser unless you explicitly call an AI provider.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧭 Smart TOC &amp;amp; Navigation
&lt;/h3&gt;

&lt;p&gt;Every document auto-generates a &lt;strong&gt;Table of Contents&lt;/strong&gt; from headings. Click to jump.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Command Palette&lt;/strong&gt; (Ctrl/Cmd+P) gives you VS Code-style fuzzy search:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search commands&lt;/li&gt;
&lt;li&gt;Jump to in-document symbols (headings)&lt;/li&gt;
&lt;li&gt;Open workspace files&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;:42&lt;/code&gt; to jump to line 42&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;strong&gt;reading progress indicator&lt;/strong&gt; shows how far through the document you are - useful for long specs and guides.&lt;/p&gt;




&lt;h3&gt;
  
  
  📊 Analytics &amp;amp; Document Insights
&lt;/h3&gt;

&lt;p&gt;For technical writers and anyone who cares about readability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flesch-Kincaid readability score&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vocabulary density&lt;/strong&gt; analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Word count + reading time&lt;/strong&gt; estimates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Section-by-section breakdown&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Word goals&lt;/strong&gt; for when you need to hit a target&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Know exactly how readable your documentation is before you ship it.&lt;/p&gt;




&lt;h3&gt;
  
  
  📁 Workspace &amp;amp; File Management
&lt;/h3&gt;

&lt;p&gt;This isn't a single-file editor. It's a proper workspace.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multiple workspaces&lt;/strong&gt; - switch between projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Folder hierarchy&lt;/strong&gt; - organize like a real file system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tabbed editing&lt;/strong&gt; - drag-to-reorder, unsaved indicators&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File search&lt;/strong&gt; - by name and content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pin files&lt;/strong&gt; - keep important docs at the top&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import/Export&lt;/strong&gt; - backup workspaces as ZIP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All storage uses the &lt;strong&gt;Origin Private File System (OPFS)&lt;/strong&gt; - a modern browser API that gives you real file system performance without a backend. Falls back to localStorage automatically if needed.&lt;/p&gt;




&lt;h3&gt;
  
  
  📦 PWA + Native Desktop
&lt;/h3&gt;

&lt;p&gt;Mark Viewer works offline as a Progressive Web App. Install it from your browser and use it without internet.&lt;/p&gt;

&lt;p&gt;Or grab the native desktop app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built with &lt;strong&gt;Tauri 2&lt;/strong&gt; (Rust, not Electron)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;~18MB&lt;/strong&gt; on macOS&lt;/li&gt;
&lt;li&gt;Native file dialogs&lt;/li&gt;
&lt;li&gt;Same full feature set as the web version&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Who Is This For?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Developers&lt;/strong&gt; → READMEs, API docs, ADRs, RFCs, technical specs. Live diagrams. Syntax highlighting. No friction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product Managers&lt;/strong&gt; → PRDs, feature briefs, roadmaps. AI-assisted expansion and outlining. Readability scoring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical Writers&lt;/strong&gt; → Long-form documentation. Vocabulary analysis. Word goals. Multi-format mental model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Teams exploring documentation-driven development&lt;/strong&gt; → AI agents can interact with structured Markdown. Mark Viewer makes that workflow seamless.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Technical Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;React 19&lt;/td&gt;
&lt;td&gt;UI framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vite&lt;/td&gt;
&lt;td&gt;Build tooling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tailwind CSS 4&lt;/td&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CodeMirror 6&lt;/td&gt;
&lt;td&gt;Editor engine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;marked.js&lt;/td&gt;
&lt;td&gt;Markdown parsing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DOMPurify&lt;/td&gt;
&lt;td&gt;HTML sanitization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;highlight.js&lt;/td&gt;
&lt;td&gt;Code highlighting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KaTeX&lt;/td&gt;
&lt;td&gt;Math rendering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mermaid.js&lt;/td&gt;
&lt;td&gt;Diagrams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tauri 2&lt;/td&gt;
&lt;td&gt;Desktop app framework&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Zero backend.&lt;/strong&gt; Everything runs client-side. The architecture is designed for privacy and performance, not for collecting your data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;I write a lot of documentation - for work, for open source, for my own projects. And I was frustrated.&lt;/p&gt;

&lt;p&gt;Not with Markdown itself. Markdown is fine. The problem was everything around it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Too many tools&lt;/li&gt;
&lt;li&gt;Too much context switching&lt;/li&gt;
&lt;li&gt;AI assistants that require copy-pasting&lt;/li&gt;
&lt;li&gt;No good way to manage multiple docs&lt;/li&gt;
&lt;li&gt;Preview tools that feel like afterthoughts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built the tool I wanted. One surface. Everything integrated. Fast. Private. Respectful of my time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://v-senthil.github.io/mark-viwer/" rel="noopener noreferrer"&gt;https://v-senthil.github.io/mark-viwer/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/v-senthil/mark-viwer/tree/main" rel="noopener noreferrer"&gt;https://github.com/v-senthil/mark-viwer/tree/main&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Feedback Welcome
&lt;/h2&gt;

&lt;p&gt;This is v1.0. There's more to build.&lt;/p&gt;

&lt;p&gt;If you try it and something doesn't work, open an issue. If you have ideas, I want to hear them.&lt;/p&gt;

&lt;p&gt;If you find it useful, &lt;strong&gt;star the repo&lt;/strong&gt; - it helps other developers find it.&lt;/p&gt;

&lt;p&gt;If you want to contribute, &lt;strong&gt;PRs are welcome&lt;/strong&gt;. Let's make documentation less painful for everyone.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built by a developer, for developers. No VC funding. No growth hacking. Just a tool that solves a real problem.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>markdown</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Automatic number-plate recognition in just 15 lines of code</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Thu, 26 Aug 2021 07:18:22 +0000</pubDate>
      <link>https://dev.to/senthil_v/automatic-number-plate-recognition-in-just-15-lines-of-code-4mil</link>
      <guid>https://dev.to/senthil_v/automatic-number-plate-recognition-in-just-15-lines-of-code-4mil</guid>
      <description>&lt;p&gt;Automatic number-plate recognition is a technology that uses optical character recognition on images to read vehicle registration plates. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://platerecognizer.com/" rel="noopener noreferrer"&gt;Plate recognizer API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Accurate, Fast, Developer- Friendly ALPR
&lt;/h2&gt;

&lt;p&gt;Automatic License Plate Recognition software that works in all environments, optimized for your location. It supports a number of country number plates all over the world.&lt;br&gt;
To see all the countries supported &lt;a href="https://platerecognizer.com/countries/" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  To get API Key:
&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://app.platerecognizer.com/accounts/signup/" rel="noopener noreferrer"&gt;platerecognizer&lt;/a&gt; and create an account to get your own API KEY.&lt;/p&gt;

&lt;h3&gt;
  
  
  Python
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;pip install json &lt;/li&gt;
&lt;li&gt;pip install requests&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pprint&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pprint&lt;/span&gt;

&lt;span class="c1"&gt;#Automatic number-plate recognition API
&lt;/span&gt;&lt;span class="n"&gt;regions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;in&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;            &lt;span class="c1"&gt;#Change to your country
&lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;IMAGE_PATH&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://api.platerecognizer.com/v1/plate-reader/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;regions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;regions&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;upload&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Token YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;#print output in JSON Format
&lt;/span&gt;&lt;span class="nf"&gt;pprint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;#get number plate value from JSON response
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;plate&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;plate_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plate&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;plate&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plate_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View full project code on my &lt;a href="https://github.com/v-senthil/Number-plate-detection-for-Parking-Assist-and-Road-Safety" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>numberplate</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Dev.to API's which can be used to view posts on your web page / portfolio</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Fri, 06 Aug 2021 05:35:51 +0000</pubDate>
      <link>https://dev.to/senthil_v/dev-to-api-s-which-can-be-used-to-view-posts-on-your-web-page-portfolio-3jnl</link>
      <guid>https://dev.to/senthil_v/dev-to-api-s-which-can-be-used-to-view-posts-on-your-web-page-portfolio-3jnl</guid>
      <description>&lt;h1&gt;
  
  
  Steps:
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Create a API key from your dev.to account, &lt;a href="https://dev.to/settings/account"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Save your API key, in postman or .env file of your project.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Used this API in my &lt;a href="https://senthil-v.herokuapp.com/posts/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;, which works great. Do check it out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  API:
&lt;/h1&gt;

&lt;h5&gt;
  
  
  Your Published Article
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request GET 'https://dev.to/api/articles/me/published' \
--header 'api-key: API_KEY'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Your Unpublished Article
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request GET 'https://dev.to/api/articles/me/unpublished' \
--header 'api-key: API_KEY'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Update an Article
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request PUT 'https://dev.to/api/articles/{id}' \
-d '{
      "article": {
              "title": "Hello, World!",
              "published": true,
              "body_markdown": "Hello DEV, this is my first 
                   post",
              "tags": [
                  "discuss",
                  "help"
              ],
              "series": "Hello series"
              }
    }' \
--header 'api-key: API_KEY'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Create a new post
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request POST 
'https://dev.to/api/articles' \
-d '{
           "article": {
              "title": "Hello, World!",
              "published": true,
              "body_markdown": "Hello DEV, this is my first 
                    post",
              "tags": [
                  "discuss",
                  "help"
               ],
               "series": "Hello series"
              }
    }' \
--header 'api-key: API_KEY'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  List of followers
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request GET 'https://dev.to/api/followers/users' \
--header 'api-key: API_KEY'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  List of tags you follow
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request GET 'https://dev.to/api/follows/tags' \
--header 'api-key: API_KEY'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Get your Profile Photo
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request GET 'https://dev.to/api/profile_images/{user_name}' \
--header 'api-key: API_KEY'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>devrel</category>
      <category>api</category>
      <category>portfolio</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Viber API</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Sat, 24 Jul 2021 06:36:51 +0000</pubDate>
      <link>https://dev.to/senthil_v/viber-api-1lcg</link>
      <guid>https://dev.to/senthil_v/viber-api-1lcg</guid>
      <description>&lt;h2&gt;
  
  
  Steps
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Login to your account using your mobile number &lt;a href="https://partners.viber.com/login" rel="noopener noreferrer"&gt;Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a bot account&lt;/li&gt;
&lt;li&gt;After which, you will get a &lt;code&gt;Private Token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Go to your Viber on your mobile (the account where you created the bot)&lt;/li&gt;
&lt;li&gt;Verify your mail ID and have a profile picture in your account.&lt;/li&gt;
&lt;li&gt;More -&amp;gt; Settings -&amp;gt; My Bots -&amp;gt; Select your bot which you created -&amp;gt; Click publish.&lt;/li&gt;
&lt;li&gt;More -&amp;gt; Settings -&amp;gt; My Bots -&amp;gt; Select your bot which you created  -&amp;gt; Message -&amp;gt; Select Viber Chat API.&lt;/li&gt;
&lt;li&gt;Set Webhook Link
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request POST 'https://chatapi.viber.com/pa/set_webhook' \
--header 'X-Viber-Auth-Token: VIBER_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
   "url":"WEBHOOK_URL"
}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Only when you set a webhook link, your bot will get activated.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Points to Note:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Only when a user sends message to a bot, you will be able to reply.&lt;/li&gt;
&lt;li&gt;You can send message to a user only using user's id (not using user's mobile number)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Changes you should make
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;VIBER_ACCESS_TOKEN&lt;/code&gt; - From Viber Admin Panel&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;USER'S ID&lt;/code&gt; - Received From Webhook&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Send Text Message
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request POST 'https://chatapi.viber.com/pa/send_message' \
--header 'X-Viber-Auth-Token: VIBER_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
   "receiver":"USERS_ID",
   "type":"text",
   "text":"Hello"
}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Send Picture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request POST 'https://chatapi.viber.com/pa/send_message' \
--header 'X-Viber-Auth-Token: VIBER_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
   "receiver":"USERS_ID",
   "type":"picture",
   "text":"Photo description",
   "media":"http://www.images.com/img.jpg",
   "thumbnail":"http://www.images.com/thumb.jpg"
}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Send Video
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request POST 'https://chatapi.viber.com/pa/send_message' \
--header 'X-Viber-Auth-Token: VIBER_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
   "receiver":"USERS_ID",
   "type":"video",
   "media":"http://www.images.com/video.mp4",
   "thumbnail":"http://www.images.com/thumb.jpg",
   "size":10000
}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Send File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request POST 'https://chatapi.viber.com/pa/send_message' \
--header 'X-Viber-Auth-Token: VIBER_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
   "receiver":"USERS_ID",
   "type":"file",
   "media":"http://www.images.com/file.doc",
   "size":10000,
   "file_name":"name_of_file.doc"
}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Send Contact
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request POST 'https://chatapi.viber.com/pa/send_message' \
--header 'X-Viber-Auth-Token: VIBER_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
   "receiver":"USERS_ID",
   "type":"contact",
   "contact":{
      "name":"Itamar",
      "phone_number":"+91965XXXXXX"
   }
}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>api</category>
      <category>viber</category>
      <category>curl</category>
      <category>messaging</category>
    </item>
    <item>
      <title>WEATHER API IN 6 LINES OF CODE</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Fri, 23 Jul 2021 11:18:49 +0000</pubDate>
      <link>https://dev.to/senthil_v/weather-api-in-6-lines-of-code-bh</link>
      <guid>https://dev.to/senthil_v/weather-api-in-6-lines-of-code-bh</guid>
      <description>&lt;p&gt;This can be used in any application with minimum lines of code. I guess this is the best Weather API you will find on the internet. Easy to use and Opensource.&lt;/p&gt;

&lt;h3&gt;
  
  
  To get API Key
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://openweathermap.org/api" rel="noopener noreferrer"&gt;Open Weather&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sign in / Sign up to your account&lt;/li&gt;
&lt;li&gt;Go to &lt;a href="https://home.openweathermap.org/api_keys" rel="noopener noreferrer"&gt;API Key Page&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Give your API Key a name, and click generate.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="n"&gt;api_address&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;http://api.openweathermap.org/data/2.5/weather?appid=YOUR_API_KEY&amp;amp;q=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;City Name :&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;api_address&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt;
&lt;span class="n"&gt;json_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;formatted_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;weather&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;main&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;formatted_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>flask</category>
      <category>python</category>
      <category>weather</category>
      <category>daily</category>
    </item>
    <item>
      <title>HOW PROGRAMMING LANGUAGE CHANGE HOW YOU THINK!</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Fri, 23 Jul 2021 10:59:14 +0000</pubDate>
      <link>https://dev.to/senthil_v/how-programming-language-change-how-you-think-1j33</link>
      <guid>https://dev.to/senthil_v/how-programming-language-change-how-you-think-1j33</guid>
      <description>&lt;p&gt;It’s said that learning a new language can change the way you think, by giving you a new perspective on the world. An even bigger influence is generational. Programming languages, particularly programming languages taught in school, tend to be taught in waves. It usually starts with C programming or C++ programming. Schools go with the program they teach you not much with the concepts. They do teach you basic concepts like looping, conditions, etc. But that's only 20% of the programming.&lt;/p&gt;

&lt;p&gt;The 2016 film &lt;a href="https://en.wikipedia.org/wiki/Arrival_(film)" rel="noopener noreferrer"&gt;Arrival&lt;/a&gt; is a science fiction drama movie starring Amy Adams and Jeremy Renner. The key focus of Arrival is language and specifically how language impacts the way we form thoughts and even perceive reality. There’s a beautiful sequence roughly 55 minutes into the film where they discuss the alien language and its problems at length and it includes this quote from one of our main scientists:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If you immerse yourself into a foreign language then you can actually rewire your brain”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While I enjoyed the film and its concepts, it got me thinking about programming and how different programming languages might alter the way we think about application development.&lt;/p&gt;

&lt;p&gt;During my engineering, I started with C programming and moved to python during my 3rd semester. I started working on mini projects using Arduino and raspberry pi. Arduino uses embedded C and raspberry pi uses python.&lt;/p&gt;

&lt;p&gt;When I went all into the part of programming and hardware, I wanted to solve all the problems which I encountered using python only. It just changed the way I think. Even now, for a simple problem, I will always think for a logic behind it and start working on it. Start working on projects rather than studying the logic or concepts on a language. Basic concepts are very important, but they can be improvised only when you start working on some projects and implement them.&lt;/p&gt;

&lt;p&gt;The concepts you learn in different programming languages will help you think differently in various situations. When you write a piece of code, it should encorage you to finish the code how much ever time it takes.&lt;/p&gt;

&lt;p&gt;Programming languages definitely changes how you think and how you make decision in your life. Ultimately, any good computer language should change the way you think. So, started working on any programming language of your choice. Look into problems you encounter or others get, and started working on a solution for it. Each and every problem will have its solution one way or the other.&lt;/p&gt;

&lt;p&gt;You can think of the logic while your attending classes or while eating or during a match or while you’re working out. Sometimes you never get the logic when you want them, it will directly come up when you are into some other work.&lt;/p&gt;

&lt;p&gt;Alan Perlis once stated:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“A language that doesn’t affect the way you think about programming, is not worth knowing.”&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Quick Message Application Using Flask</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Thu, 22 Jul 2021 09:25:55 +0000</pubDate>
      <link>https://dev.to/senthil_v/quick-message-application-using-flask-3n11</link>
      <guid>https://dev.to/senthil_v/quick-message-application-using-flask-3n11</guid>
      <description>&lt;p&gt;As Whats App released What's App Payment in its new Update, people often have to save the number to their contact list. Even if people want to send a single message or want privacy, they have to save the number.&lt;br&gt;
To overcome all this problem, here is an application that can be used directly to send what's app message without saving the number in your contact list.&lt;/p&gt;

&lt;h3&gt;
  
  
  New Update 💯(5th August 2021):
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Added Quick Viber and Line message service. Just give the profile name of the user and it takes you directly to Line. And for Viber, give the users phone number with country code &lt;code&gt;(without +)&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Last Update 12th December 2020):
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Added Quick Telegram message service. Just give the profile name of the user and it takes you directly to telegram.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Upcoming update
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Signal Quick messaging&lt;/li&gt;
&lt;li&gt;WeChat Quick messaging&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Access the Application 👇👇&lt;br&gt;
&lt;a href="https://quick-message.herokuapp.com/" rel="noopener noreferrer"&gt;Quick Chat&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Please do use it on your mobile devices. And also add the page to your home screen for easy access&lt;br&gt;
Updates coming soon!!!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>whatsapp</category>
      <category>telegram</category>
      <category>flask</category>
      <category>python</category>
    </item>
    <item>
      <title>Twitter API</title>
      <dc:creator>Senthil Pitchappan V</dc:creator>
      <pubDate>Thu, 22 Jul 2021 06:42:31 +0000</pubDate>
      <link>https://dev.to/senthil_v/twitter-api-488a</link>
      <guid>https://dev.to/senthil_v/twitter-api-488a</guid>
      <description>&lt;p&gt;Twitter Provides API for developers to use these API to create applications, send message in twitter, post content, post tweets etc. Twitter lets gives a monthly cap of 5,00,000 tweets to pull using the API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Libraries
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Tweet library (python) &lt;a href="https://pypi.org/project/twitter/" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;twitter4j jar (java) &lt;a href="https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core/4.0.7" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Steps
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download tweet library (pip install tweet)&lt;/li&gt;
&lt;li&gt;Create a Twitter Developer account &lt;a href="https://developer.twitter.com/en/portal/dashboard" rel="noopener noreferrer"&gt;Create Account&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Go to projects and Apps in your developer account &lt;a href="https://developer.twitter.com/en/portal/projects-and-apps" rel="noopener noreferrer"&gt;Projects and Apps&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create an App and obtain consumer key, consumer secret, access token, access token secret&lt;/li&gt;
&lt;li&gt;Find the keys and access token in your twitter apps tab under keys and tokens&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Python
&lt;/h2&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  Java
&lt;/h2&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
      <category>twitter</category>
      <category>api</category>
      <category>python</category>
      <category>java</category>
    </item>
  </channel>
</rss>
