<?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: Bùi Đức Nhật</title>
    <description>The latest articles on DEV Community by Bùi Đức Nhật (@buiducnhat).</description>
    <link>https://dev.to/buiducnhat</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F768693%2Fc7a7b679-45ce-47cd-a9ab-d9f3535b5d62.jpeg</url>
      <title>DEV Community: Bùi Đức Nhật</title>
      <link>https://dev.to/buiducnhat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/buiducnhat"/>
    <language>en</language>
    <item>
      <title>Why I built a fully MIT, Notion-style block editor for React</title>
      <dc:creator>Bùi Đức Nhật</dc:creator>
      <pubDate>Wed, 30 Sep 2026 13:52:06 +0000</pubDate>
      <link>https://dev.to/buiducnhat/why-i-built-a-fully-mit-notion-style-block-editor-for-react-2d6p</link>
      <guid>https://dev.to/buiducnhat/why-i-built-a-fully-mit-notion-style-block-editor-for-react-2d6p</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — &lt;a href="https://github.com/buiducnhat/slash-editor" rel="noopener noreferrer"&gt;slash-editor&lt;/a&gt; is a Notion-style block&lt;br&gt;
editor for React. Headless core on Tiptap v3/ProseMirror, React hooks, and UI delivered as a&lt;br&gt;
real shadcn registry, so the menus, toolbars and node views land in &lt;em&gt;your&lt;/em&gt; repo as code you own.&lt;br&gt;
MIT end to end, no paid tier, no hosted dependency.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Playground: &lt;a href="https://slasheditor.dev/playground" rel="noopener noreferrer"&gt;https://slasheditor.dev/playground&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://slasheditor.dev/docs" rel="noopener noreferrer"&gt;https://slasheditor.dev/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Starter: &lt;a href="https://github.com/buiducnhat/slash-editor/tree/main/examples/nextjs-starter" rel="noopener noreferrer"&gt;https://github.com/buiducnhat/slash-editor/tree/main/examples/nextjs-starter&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbuiducnhat%2Fslash-editor%2Fmain%2F.github%2Fassets%2Fdemo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbuiducnhat%2Fslash-editor%2Fmain%2F.github%2Fassets%2Fdemo.gif" alt="demo" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The gap
&lt;/h2&gt;

&lt;p&gt;Every time I needed a "Notion-like" editor in a product, the engine was never the problem.&lt;br&gt;
ProseMirror and Tiptap are excellent and MIT. Yjs and Hocuspocus make collaboration&lt;br&gt;
self-hostable. The problem was the layer on top: the block interaction model.&lt;/p&gt;

&lt;p&gt;Slash insertion, a hover drag handle, reordering nested blocks, "Turn into", block comments —&lt;br&gt;
good options exist, but each came with a tradeoff for my use: styled npm components, a&lt;br&gt;
different engine (Slate), or pieces like templates, AI or comments available on commercial&lt;br&gt;
licenses or paid plans.&lt;/p&gt;

&lt;p&gt;I wanted three things at once:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Notion-grade block UX&lt;/strong&gt;, keyboard-first, with mouse equivalents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI I own&lt;/strong&gt;, styled with my existing shadcn tokens, dark mode for free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A 100% MIT dependency graph&lt;/strong&gt;, with anything server-side (sync, AI, uploads) behind an
adapter so I bring my own backend.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  The design: core computes, react coordinates, registry renders
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@slash-editor/core    Tiptap/ProseMirror extensions, schema, commands. No React, no CSS.
@slash-editor/react   Hooks over @tiptap/react: lifecycle, store subscriptions, caret anchors.
shadcn registry       The rendered UI. `shadcn add` copies it into your app.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Core never emits a class name. Every UI surface (slash menu, bubble toolbar, drag handle, block&lt;br&gt;
menu) is a small state machine in core exposed through a &lt;code&gt;subscribe&lt;/code&gt;/&lt;code&gt;getState&lt;/code&gt; store; React&lt;br&gt;
hooks turn that into state plus an anchor rect; the registry component renders it with&lt;br&gt;
&lt;code&gt;Popover&lt;/code&gt;, &lt;code&gt;Command&lt;/code&gt;, and your Tailwind tokens.&lt;/p&gt;

&lt;p&gt;The result is a split I've wanted for years: &lt;strong&gt;behavior ships over npm, so fixes reach you with&lt;br&gt;
a version bump. Markup ships through the registry, so it's yours to change.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bun add @slash-editor/core @slash-editor/react
bunx &lt;span class="nt"&gt;--bun&lt;/span&gt; shadcn@latest add @slash-editor/slash-editor-kit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  A few engineering details that were harder than they look
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Drag handle without &lt;code&gt;posAtCoords&lt;/code&gt;.&lt;/strong&gt; The gutter and a block's left padding have no caret&lt;br&gt;
position, so &lt;code&gt;view.posAtCoords&lt;/code&gt; returns nothing exactly where the pointer is heading. Hover and&lt;br&gt;
drop targets resolve from cached block rects instead (invalidated per transaction), picking the&lt;br&gt;
smallest rect that contains the pointer so a list item wins over its list. Every move is a single&lt;br&gt;
&lt;code&gt;delete + insert&lt;/code&gt; transaction: one undo step, and the block's id rides along.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nesting rules from the schema, not a wrapper.&lt;/strong&gt; There's no universal &lt;code&gt;blockContainer&lt;/code&gt; node.&lt;br&gt;
Drops ask the schema: &lt;code&gt;canNest&lt;/code&gt; checks &lt;code&gt;contentMatchAt(childCount)&lt;/code&gt; (the state &lt;em&gt;after&lt;/em&gt; existing&lt;br&gt;
children, since &lt;code&gt;listItem&lt;/code&gt; is &lt;code&gt;paragraph block*&lt;/code&gt;), and &lt;code&gt;canPlaceBeside&lt;/code&gt; falls back to the&lt;br&gt;
enclosing container instead of splitting a list. That keeps the document plain Tiptap JSON, so&lt;br&gt;
third-party extensions and markdown serialization keep working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yjs-safe from day one.&lt;/strong&gt; No non-deterministic attribute defaults; block ids assigned once on&lt;br&gt;
insert, never on render, and regenerated only on pasted duplicates — skipped for remote&lt;br&gt;
&lt;code&gt;y-sync&lt;/code&gt; transactions. That's why collaboration, comments anchored to blocks, and Mermaid&lt;br&gt;
diagrams (source is document text, so edits merge per character) all compose.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in 0.5
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Slash menu with ranking, aliases, groups, custom items&lt;/li&gt;
&lt;li&gt;Drag handle with live preview card, block menu (duplicate, delete, turn into)&lt;/li&gt;
&lt;li&gt;Headings, lists, task lists, toggles, callouts, quotes, columns, tables&lt;/li&gt;
&lt;li&gt;Image / video / file / embed with an upload adapter&lt;/li&gt;
&lt;li&gt;Mentions, AI actions via a stream adapter (bring your own model)&lt;/li&gt;
&lt;li&gt;Real-time collaboration (Yjs, Hocuspocus or WebRTC), presence avatars, comments&lt;/li&gt;
&lt;li&gt;Mermaid diagrams, table of contents, read-only documents&lt;/li&gt;
&lt;li&gt;Markdown import/export and markdown shortcuts&lt;/li&gt;
&lt;li&gt;Docs with &lt;code&gt;llms.txt&lt;/code&gt; / &lt;code&gt;llms-full.txt&lt;/code&gt; so your coding agent can read them&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Non-goals
&lt;/h2&gt;

&lt;p&gt;No hosted services — sync server, AI gateway and asset storage are adapters. No DOCX/PDF&lt;br&gt;
fidelity, pagination or track changes. React only for now, though core stays renderer-free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it / help out
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;⭐ &lt;a href="https://github.com/buiducnhat/slash-editor" rel="noopener noreferrer"&gt;Star the repo&lt;/a&gt; if it's useful&lt;/li&gt;
&lt;li&gt;Try the &lt;a href="https://slasheditor.dev/playground" rel="noopener noreferrer"&gt;playground&lt;/a&gt; (add &lt;code&gt;?collab=room-name&lt;/code&gt; and open it
in two tabs)&lt;/li&gt;
&lt;li&gt;Pick a &lt;a href="https://github.com/buiducnhat/slash-editor/labels/good%20first%20issue" rel="noopener noreferrer"&gt;good first issue&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tell me what's missing in &lt;a href="https://github.com/buiducnhat/slash-editor/discussions" rel="noopener noreferrer"&gt;Discussions&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback on the API shape is the most valuable thing right now, before 1.0 locks it in.&lt;/p&gt;

</description>
      <category>react</category>
      <category>opensource</category>
      <category>tiptap</category>
      <category>shadcn</category>
    </item>
    <item>
      <title>Ollamazing: Your Free, Open-Source AI Assistant Right in Your Browser</title>
      <dc:creator>Bùi Đức Nhật</dc:creator>
      <pubDate>Fri, 14 Feb 2025 14:45:42 +0000</pubDate>
      <link>https://dev.to/buiducnhat/ollamazing-your-free-open-source-ai-assistant-right-in-your-browser-3e0n</link>
      <guid>https://dev.to/buiducnhat/ollamazing-your-free-open-source-ai-assistant-right-in-your-browser-3e0n</guid>
      <description>&lt;p&gt;Hey fellow developers! 👋 I'm excited to introduce &lt;strong&gt;Ollamazing&lt;/strong&gt;, a browser extension that brings the power of local AI models directly into your browsing experience. Let me share why you might want to give it a try.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Ollamazing?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ollamazing&lt;/strong&gt; is a free, open-source browser extension that connects with &lt;strong&gt;Ollama&lt;/strong&gt; to run AI models locally on your machine. Think of it as having ChatGPT-like (or even Deepseek for newer) capabilities, but with complete privacy and no subscription fees.&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%2Fsjxmfrqalnoe53tk8n12.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%2Fsjxmfrqalnoe53tk8n12.png" alt="Demo" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌟 Key Features
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;100% Free and Open Source

&lt;ul&gt;
&lt;li&gt;No hidden costs or subscription fees&lt;/li&gt;
&lt;li&gt;Fully open-source codebase&lt;/li&gt;
&lt;li&gt;Community-driven development&lt;/li&gt;
&lt;li&gt;Transparent about how your data is handled&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Local AI Processing

&lt;ul&gt;
&lt;li&gt;Thanks to Ollama, we can run AI models directly on your machine&lt;/li&gt;
&lt;li&gt;Complete privacy - your data never leaves your computer&lt;/li&gt;
&lt;li&gt;Works offline once models are downloaded&lt;/li&gt;
&lt;li&gt;Support for various open-source models (&lt;em&gt;llama3.3&lt;/em&gt;, &lt;em&gt;gemma&lt;/em&gt;, &lt;em&gt;phi4&lt;/em&gt;, &lt;em&gt;qwen&lt;/em&gt;, &lt;em&gt;mistral&lt;/em&gt;, &lt;em&gt;codellama&lt;/em&gt;, etc.) and specially &lt;strong&gt;&lt;em&gt;deepseek-r1&lt;/em&gt;&lt;/strong&gt; - the most popular open source model at current time.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Seamless Browser Integration

&lt;ul&gt;
&lt;li&gt;Chat with AI right from your browser sidebar&lt;/li&gt;
&lt;li&gt;Text selection support for quick queries&lt;/li&gt;
&lt;li&gt;Context-aware responses based on the current webpage&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Developer-Friendly Features

&lt;ul&gt;
&lt;li&gt;Code completion and explanation&lt;/li&gt;
&lt;li&gt;Documentation generation&lt;/li&gt;
&lt;li&gt;Code review assistance&lt;/li&gt;
&lt;li&gt;Bug fixing suggestions&lt;/li&gt;
&lt;li&gt;Multiple programming language support&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Easy Setup

&lt;ul&gt;
&lt;li&gt;Install Ollama on your machine or any remote server&lt;/li&gt;
&lt;li&gt;Download your preferred models&lt;/li&gt;
&lt;li&gt;Install the Ollamazing browser extension&lt;/li&gt;
&lt;li&gt;Start chatting with AI!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🚀 Getting Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Install Ollama&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh

&lt;span class="c"&gt;# 2. Pull your first model (e.g., Deepseek R1 7 billion parameters)&lt;/span&gt;
ollama pull deepseek-r1:7b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then simply install the extension from your browser's extension store, and you're ready to go!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For more information about Ollama, please visit the &lt;a href="https://ollama.com/" rel="noopener noreferrer"&gt;official website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: If you run Ollama on local machine, ensure to setup the &lt;code&gt;OLLAMA_ORIGINS&lt;/code&gt; to allow the extension can connect to the server. For more details, read &lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.md#how-do-i-configure-ollama-server" rel="noopener noreferrer"&gt;Ollama FAQ&lt;/a&gt;, set the &lt;code&gt;OLLAMA_ORIGINS&lt;/code&gt; to &lt;code&gt;*&lt;/code&gt; or &lt;code&gt;chrome-extension://*&lt;/code&gt; or the domain you want to allow.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  💡 Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Code completion and explanation&lt;/li&gt;
&lt;li&gt;Documentation generation&lt;/li&gt;
&lt;li&gt;Code review assistance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔒 Privacy First
&lt;/h2&gt;

&lt;p&gt;Unlike cloud-based AI assistants, Ollamazing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keeps your data on your machine&lt;/li&gt;
&lt;li&gt;Doesn't require an internet connection for inference&lt;/li&gt;
&lt;li&gt;Gives you full control over which model to use&lt;/li&gt;
&lt;li&gt;Allows you to audit the code and know exactly what's happening with your data&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Technical Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use framework &lt;a href="https://wxt.dev/" rel="noopener noreferrer"&gt;WXT&lt;/a&gt; to build the extension&lt;/li&gt;
&lt;li&gt;Built with React and TypeScript&lt;/li&gt;
&lt;li&gt;Uses Valtio for state management&lt;/li&gt;
&lt;li&gt;Implements TanStack Query for efficient data fetching&lt;/li&gt;
&lt;li&gt;Follows modern web extension best practices&lt;/li&gt;
&lt;li&gt;Utilizes Shadcn/UI for a clean, modern interface&lt;/li&gt;
&lt;li&gt;Use i18n for multi-language support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🤝 Contributing
&lt;/h2&gt;

&lt;p&gt;We welcome contributions! Whether it's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding new features&lt;/li&gt;
&lt;li&gt;Improving documentation&lt;/li&gt;
&lt;li&gt;Reporting bugs&lt;/li&gt;
&lt;li&gt;Suggesting enhancements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out our GitHub repository &lt;a href="https://github.com/buiducnhat/ollamazing" rel="noopener noreferrer"&gt;https://github.com/buiducnhat/ollamazing&lt;/a&gt; to get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  🔮 Future Plans
&lt;/h2&gt;

&lt;p&gt;We're working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced context awareness&lt;/li&gt;
&lt;li&gt;Custom model fine-tuning support&lt;/li&gt;
&lt;li&gt;Improve UI/UX&lt;/li&gt;
&lt;li&gt;Improved performance optimizations&lt;/li&gt;
&lt;li&gt;Additional browser support&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Ready to experience local AI in your browser? Get started with Ollamazing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome web store: &lt;a href="https://chromewebstore.google.com/detail/ollamazing/bfndpdpimcehljfgjdacbpapgbkecahi" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/ollamazing/bfndpdpimcehljfgjdacbpapgbkecahi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub repository: &lt;a href="https://github.com/buiducnhat/ollamazing" rel="noopener noreferrer"&gt;https://github.com/buiducnhat/ollamazing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Product Hunt: &lt;a href="https://www.producthunt.com/posts/ollamazing" rel="noopener noreferrer"&gt;https://www.producthunt.com/posts/ollamazing&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me know in the comments if you have any questions or feedback! Have you tried running AI models locally before? What features would you like to see in Ollamazing?&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The most useful VS Code extensions for developer</title>
      <dc:creator>Bùi Đức Nhật</dc:creator>
      <pubDate>Fri, 01 Apr 2022 10:22:43 +0000</pubDate>
      <link>https://dev.to/buiducnhat/the-most-useful-vs-code-extensions-for-developer-412o</link>
      <guid>https://dev.to/buiducnhat/the-most-useful-vs-code-extensions-for-developer-412o</guid>
      <description>&lt;p&gt;Visual Studio Code a.k.a VS Code, released by Microsoft, is one of the most popular open source code editors for developers.&lt;/p&gt;

&lt;p&gt;VS Code helps developers increase productivity in the execution of projects. One of the reasons make VS Code popular is its variety of available extensions in &lt;a href="https://marketplace.visualstudio.com/VSCode" rel="noreferrer noopener"&gt;marketplace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Today, I am going to list some extensions that I usually use.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The below extensions are useful for the most developers in any field, not just for Web App or Embedded developers. So in the future I will have other articles about extensions suitable for specific areas.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitLens&lt;/li&gt;
&lt;li&gt;Visual Studio IntelliCode&lt;/li&gt;
&lt;li&gt;Project Manager&lt;/li&gt;
&lt;li&gt;vscode-icons&lt;/li&gt;
&lt;li&gt;Bracket Pair Colorizer 2&lt;/li&gt;
&lt;li&gt;indent-rainbow&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  GitLens
&lt;/h2&gt;

&lt;p&gt;VS Code has already integrated built in &lt;code&gt;git&lt;/code&gt; GUI, it's very helpful for developers because nowaday &lt;code&gt;git&lt;/code&gt; is absolutely necessary for them.&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%2Fraw.githubusercontent.com%2Fgitkraken%2Fvscode-gitlens%2Fmain%2Fimages%2Fdocs%2Fgitlens-logo-anybg.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%2Fraw.githubusercontent.com%2Fgitkraken%2Fvscode-gitlens%2Fmain%2Fimages%2Fdocs%2Fgitlens-logo-anybg.png" alt="gitlens-image" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When working with other team members, GitLens is a very good choice with its features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Revision navigation through file history.&lt;/li&gt;
&lt;li&gt;A current line blame annotation at the end of the line showing the commit.&lt;/li&gt;
&lt;li&gt;A status bar blame annotation for the commit and author who last modified the current line.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find it &lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens" rel="noreferrer noopener"&gt;here&lt;/a&gt; (in Visual Studio Code marketplace).&lt;/p&gt;

&lt;h2&gt;
  
  
  Visual Studio IntelliCode
&lt;/h2&gt;

&lt;p&gt;At the time I write this article, &lt;code&gt;Visual Studio IntelliCode&lt;/code&gt; extension has the 8th most downloads in marketplace. So it became indispensable for developers.&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%2Fgo.microsoft.com%2Ffwlink%2F%3Flinkid%3D2006041" 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%2Fgo.microsoft.com%2Ffwlink%2F%3Flinkid%3D2006041" alt="visual-studio-intellicode" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This extension helps us writing code quickly by adding a star before the code snippets (it means this code had used very very much before by developers over the world).&lt;/p&gt;

&lt;p&gt;You can install this extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode" rel="noreferrer noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Manager
&lt;/h2&gt;

&lt;p&gt;Normally, each project is a &lt;code&gt;folder/directory&lt;/code&gt; of your OS. Each time you want to open your project, you have to open the corresponding &lt;code&gt;folder/directory&lt;/code&gt; and of course, you have to remember its path.&lt;/p&gt;

&lt;p&gt;When the number of your projects increases, or you save them in a disorganized manner, you usually forget where they locate.&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%2Fqr0potol8zrcbb85ieyq.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%2Fqr0potol8zrcbb85ieyq.png" alt="project-manager-image" width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This problem can be easily solved with &lt;code&gt;Project Manager&lt;/code&gt; extension. You can save your projects like folder/directory or even your workspaces. Your projects will be visible in the side bar like this&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%2Fwu3roxoh7336hjc0504e.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%2Fwu3roxoh7336hjc0504e.png" alt="side-bar" width="372" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can install this extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager" rel="noreferrer noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  vscode-icons
&lt;/h2&gt;

&lt;p&gt;This extension is just an &lt;code&gt;icon theme&lt;/code&gt; for VS Code. It supplies icon for the folders/directories and files in the explorer sidebar of VS Code.&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%2Fkd7g4yum5bxi30ryb07j.gif" 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%2Fkd7g4yum5bxi30ryb07j.gif" alt="vscode-icons-image" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are many good choice &lt;code&gt;icon theme&lt;/code&gt; for us at marketplace, the reason why I recommend this because &lt;code&gt;vscode-icons&lt;/code&gt; is the official extension of &lt;code&gt;Microsoft&lt;/code&gt; (who made VS Code).&lt;/p&gt;

&lt;p&gt;You can install this extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons" rel="noreferrer noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Of course, you can easily find out for your favorite themes at marketplace by type &lt;code&gt;icon&lt;/code&gt; into the search input. The next step you just select and install them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bracket Pair Colorizer 2 (deprecated)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note: This extension is now deprecated and no longer being supported. Instead, this is now a built in feature of &lt;code&gt;VS Code&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Have you ever known about &lt;em&gt;LISP&lt;/em&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%2Ft2rqlzhyl3vcc1snmr98.jpg" 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%2Ft2rqlzhyl3vcc1snmr98.jpg" alt="bracket-hells" width="320" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When your code block increase too big, you use too many brackets, you difficultly find the rights bracket pairs, this extension will help you.&lt;/p&gt;

&lt;p&gt;Look at this image and you will understand how it works&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%2Fvjhbswyw11k0l3g4gvmf.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%2Fvjhbswyw11k0l3g4gvmf.png" alt="bracket-colorizer-2-image" width="625" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;del&gt;You can install this extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2" rel="noreferrer noopener"&gt;here&lt;/a&gt;.&lt;/del&gt; (deprecated).&lt;/p&gt;

&lt;p&gt;Now you can enable &lt;code&gt;Black pair colorizer&lt;/code&gt; as a native feature in &lt;code&gt;VS Code&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Just open your &lt;code&gt;settings.json&lt;/code&gt; of your &lt;code&gt;VS Code&lt;/code&gt; and add two following lines:&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="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;​&lt;/span&gt;&lt;span class="s2"&gt;"editor.bracketPairColorization.enabled"&lt;/span&gt;&lt;span class="err"&gt;​:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;​&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="err"&gt;​&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;​​&lt;/span&gt;&lt;span class="s2"&gt;"editor.guides.bracketPairs"&lt;/span&gt;&lt;span class="err"&gt;​:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;​&lt;/span&gt;&lt;span class="s2"&gt;"active"&lt;/span&gt;&lt;span class="err"&gt;​&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&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;
  
  
  indent-rainbow
&lt;/h2&gt;

&lt;p&gt;Like &lt;code&gt;Bracket Pair Colorizer 2&lt;/code&gt;, &lt;code&gt;indent-rainbow&lt;/code&gt; help us easily when see the code blocks, especially for &lt;code&gt;Python&lt;/code&gt; developer&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%2Fnf8qpugg3dcsggu9q7h1.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%2Fnf8qpugg3dcsggu9q7h1.png" alt="indent-rainbow-image" width="525" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can install this extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow" rel="noreferrer noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: the last both extensions can be customized, you should read their documents at their homepage to continue.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These are the best extensions for me, and it totally from my opinion, so if you know more helpful extensions, recommend for us!&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
