41554 blogs · [ { "id": "01a087ea-0453-72c6-8544-a844f4f499ba", "title": "Simple Neovim autopairs", "url": "https://tduyng.com/blog/neovim-custom-pairs/", "published_at": "2026-06-11T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844f5cf1e3f", "title": "[Notes] Vim marks the hidden superpower", "url": "https://tduyng.com/notes/vim-marks/", "published_at": "2026-04-16T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844f6807f0b", "title": "[Notes] Vim buffers, windows, and tabs", "url": "https://tduyng.com/notes/vim-buffer-window-tab/", "published_at": "2026-04-11T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844f765db4f", "title": "Dropping noice.nvim for Neovim's native UI2", "url": "https://tduyng.com/blog/neovim-drop-noice-ui2/", "published_at": "2026-04-10T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844f7c61c82", "title": "[Notes] Vim search with Ripgrep", "url": "https://tduyng.com/notes/vim-search-regex-ripgrep/", "published_at": "2026-04-08T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844f838f8ce", "title": "Codeme.nvim private coding activity tracking in Neovim", "url": "https://tduyng.com/blog/codeme-private-coding-tracker-neovim/", "published_at": "2026-04-02T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844f90dc257", "title": "My Note Taking Setup in Neovim", "url": "https://tduyng.com/blog/neovim-markdown-notes/", "published_at": "2026-02-15T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844f9858eea", "title": "The Rise of Terminal Tools", "url": "https://tduyng.com/blog/rise-of-terminal/", "published_at": "2026-02-14T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844fa3c641d", "title": "Simple Neovim Statusline", "url": "https://tduyng.com/blog/neovim-statusline-native/", "published_at": "2026-02-12T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844fb1f7f96", "title": "Simple Neovim Tab Management", "url": "https://tduyng.com/blog/neovim-tabline-native/", "published_at": "2026-02-10T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844fb2dd2d8", "title": "Simple Neovim Session Management VSCode style", "url": "https://tduyng.com/blog/neovim-session-management/", "published_at": "2026-02-08T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844fbef1819", "title": "[Notes] Vim tips", "url": "https://tduyng.com/notes/vim-tips/", "published_at": "2026-01-05T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844fc623d65", "title": "Neovim enhanced editing experience", "url": "https://tduyng.com/blog/neovim-enhance-editing-experiences/", "published_at": "2025-12-22T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844fcd6deba", "title": "Neovim debugging for Node.js/TypeScript", "url": "https://tduyng.com/blog/neovim-setup-debug-nodejs/", "published_at": "2025-12-21T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844fdad7926", "title": "My Vim setup in VSCode", "url": "https://tduyng.com/blog/vim-in-vscode/", "published_at": "2025-12-05T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844fe36e4cc", "title": "Neovim git integration", "url": "https://tduyng.com/blog/neovim-git-tools/", "published_at": "2025-12-02T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844ff126623", "title": "Neovim formatter with conform.nvim", "url": "https://tduyng.com/blog/neovim-formatter-conform/", "published_at": "2025-11-29T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a844ff9a47fe", "title": "Neovim auto-completion with blink.cmp", "url": "https://tduyng.com/blog/neovim-auto-completions/", "published_at": "2025-11-28T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a845007a5104", "title": "Neovim syntax highlighting with Tree-sitter", "url": "https://tduyng.com/blog/neovim-highlight-syntax/", "published_at": "2025-11-26T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84500d4997a", "title": "Justfile became my favorite task runner", "url": "https://tduyng.com/blog/justfile-my-favorite-task-runner/", "published_at": "2025-11-24T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a845018259f9", "title": "[Gozzi] Native mermaid support", "url": "https://tduyng.com/notes/mermaid-support/", "published_at": "2025-11-23T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450281b76e", "title": "[Gozzi] Native KaTeX support", "url": "https://tduyng.com/notes/katex-support/", "published_at": "2025-11-22T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84502f519e4", "title": "Why I built my own static site generator", "url": "https://tduyng.com/blog/why-i-built-my-own-static-site-generator/", "published_at": "2025-11-22T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a845034a5d47", "title": "Managing snacks.nvim with native vim.pack", "url": "https://tduyng.com/blog/vim-pack-and-snacks/", "published_at": "2025-10-28T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84503d5002b", "title": "Setting up Neovim native lsp", "url": "https://tduyng.com/blog/neovim-lsp-native/", "published_at": "2025-10-06T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450417298a", "title": "[Note] Revisiting Nix: Reflecting on My Second Attempt", "url": "https://tduyng.com/notes/nix-again/", "published_at": "2025-09-26T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450453d068", "title": "[Note] make your shell magical with Atuin", "url": "https://tduyng.com/notes/atuin/", "published_at": "2025-09-25T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84504cea6ef", "title": "[Note] everyone should use zoxide", "url": "https://tduyng.com/notes/zoxide/", "published_at": "2025-09-20T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450553e7ee", "title": "Setting up neovim 0.12 (the core configuration before plugins)", "url": "https://tduyng.com/blog/neovim-basic-setup/", "published_at": "2025-09-04T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450607ae19", "title": "My Journey from IDEs to Neovim", "url": "https://tduyng.com/blog/my-neovim-story/", "published_at": "2025-09-01T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84506d16790", "title": "[Note] Different ways to batch update Nodejs dependencies", "url": "https://tduyng.com/notes/update-dependencies-nodejs/", "published_at": "2025-02-23T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84506dd3f16", "title": "[Note] The fastest way to rewrite Git history", "url": "https://tduyng.com/notes/git-filter-repo/", "published_at": "2025-02-06T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450760bbb1", "title": "[Note] You don't need husky", "url": "https://tduyng.com/notes/husky-alternative/", "published_at": "2025-02-05T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84507d04471", "title": "Scripting tools - A Node.js friendly alternative to makefile", "url": "https://tduyng.com/blog/scripting-tools/", "published_at": "2025-01-29T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a845086461e5", "title": "[Note] Display colors in Makefile", "url": "https://tduyng.com/notes/display-colors-makefile/", "published_at": "2025-01-23T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a845091738a8", "title": "[Note] Display all Makefile commands", "url": "https://tduyng.com/notes/make-display-helper/", "published_at": "2025-01-22T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a845095323bf", "title": "[Note] Supercharge Git with fzf", "url": "https://tduyng.com/notes/combine-git-fzf/", "published_at": "2025-01-21T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84509c433a8", "title": "[Note] Better Git log", "url": "https://tduyng.com/notes/git-log-better/", "published_at": "2025-01-20T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450a8e3c55", "title": "[Note] Managing multiple Git accounts", "url": "https://tduyng.com/notes/git-multiple-account/", "published_at": "2025-01-19T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450ab311bd", "title": "[Note] Git aliases", "url": "https://tduyng.com/notes/git-alias/", "published_at": "2025-01-18T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450b97f319", "title": "[Note] Run a command if there are unstaged changes", "url": "https://tduyng.com/notes/git-changes/", "published_at": "2025-01-17T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450beea35a", "title": "[Note] List all files tracked by Git", "url": "https://tduyng.com/notes/git-ls-files/", "published_at": "2025-01-16T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450cccc3fd", "title": "[Note] Git Checkout vs. Git Switch", "url": "https://tduyng.com/notes/git-checkout-vs-switch/", "published_at": "2025-01-15T20:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450d08664b", "title": "[Note] Git Reset vs. Git Restore", "url": "https://tduyng.com/notes/git-reset-vs-restore/", "published_at": "2025-01-15T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450d15f5a1", "title": "[Note] Ingore all .DS_store files globally", "url": "https://tduyng.com/notes/gitignore-globally/", "published_at": "2025-01-14T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450d9f1497", "title": "[Note] Update all Git submodules to latest commit", "url": "https://tduyng.com/notes/update-git-submodules/", "published_at": "2025-01-13T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450e14dbc7", "title": "[Note] Run Github actions locally", "url": "https://tduyng.com/notes/run-github-actions-locally/", "published_at": "2025-01-12T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450e5ddc39", "title": "[Note] First attempt at migrating from Homebrew to Nix with Nix Home Manager", "url": "https://tduyng.com/notes/nix-home-manager/", "published_at": "2025-01-10T20:09:30+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450e84cad5", "title": "[Note] Tilting window management on macOS with aerospace", "url": "https://tduyng.com/notes/aerospace/", "published_at": "2025-01-08T22:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450eed09ce", "title": "[Note] Manage better for my dotfiles.", "url": "https://tduyng.com/notes/stow-dotfiles/", "published_at": "2025-01-05T12:01:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8450fb8b532", "title": "[Note] Returning to Neovim for Coding", "url": "https://tduyng.com/notes/neovim-coding/", "published_at": "2025-01-03T15:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8451077ae64", "title": "[Note] CLI tools I love using", "url": "https://tduyng.com/notes/cli-tools/", "published_at": "2025-01-03T15:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8451165e7b4", "title": "[Note] Ghostty?", "url": "https://tduyng.com/notes/ghostty/", "published_at": "2025-01-01T21:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84511f12fb2", "title": "[Note] I’ve started implementing short notes on my website", "url": "https://tduyng.com/notes/init-notes/", "published_at": "2024-12-26T08:09:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84512eb00b4", "title": "How to build dual package npm from Typescript - the easiest way", "url": "https://tduyng.com/blog/dual-package-typescript/", "published_at": "2024-11-13T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84512fe367d", "title": "Essential tsconfig.json options you should use", "url": "https://tduyng.com/blog/tsconfig-options-you-should-use/", "published_at": "2024-11-11T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8451399adad", "title": "Migrate to ESLint 9.x", "url": "https://tduyng.com/blog/migrating-to-eslint9x/", "published_at": "2024-07-16T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84514153dec", "title": "Why you might be using Enums in TypeScript wrong", "url": "https://tduyng.com/blog/enum-typescript/", "published_at": "2024-06-21T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a845149ad7f1", "title": "Should you switch to Deno?", "url": "https://tduyng.com/blog/switch-to-deno/", "published_at": "2024-06-15T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8451511c080", "title": "My blog now offers full-text RSS feeds", "url": "https://tduyng.com/blog/full-text-rss-feeds/", "published_at": "2024-06-10T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84515a3bef3", "title": "Transforming website images into WebP with Rust for faster loading times", "url": "https://tduyng.com/blog/rust-webp-transform/", "published_at": "2024-05-23T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8451628a9f1", "title": "Dynamic Github profile with Bun and Typescript", "url": "https://tduyng.com/blog/dynamic-github-profile-with-bun-typescript/", "published_at": "2024-05-15T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8451629aee3", "title": "How I made my GitHub profile README dynamic", "url": "https://tduyng.com/blog/dynamic-github-profile-readme/", "published_at": "2024-05-13T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84516b81b2b", "title": "New home for my website", "url": "https://tduyng.com/blog/new-home-for-my-website/", "published_at": "2024-05-11T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a8451741a9e0", "title": "Start a new journey", "url": "https://tduyng.com/blog/start-a-new-journey/", "published_at": "2021-05-01T08:00:00+00:00" }, { "id": "01a087ea-0453-72c6-8544-a84517d4637e", "title": "Build your personal website without spending any money", "url": "https://tduyng.com/blog/build-free-your-personal-website-using-jekyll/", "published_at": "2020-05-25T08:00:00+00:00" } ] posts Claim your blog
Back to tduyng.com
Blog · corpus.blog/blogs/tduyng.com/posts

tduyng.com

tduyng.com

2026

2025

2024

2021

2020