My Projects
A non exhaustive list of my side quests.
Last updated : 2024-10-07
ToyChest.nvim - a Neovim plugin for managing sessions
I am a neovim user and I was learning how to use marks and I figured out a workflow where I could just save all of my sessions globally to a folder at ~/.vim_sessions
. But there were some pain points.
- The default
:source
and:mks
commands does not have autocomplete, so I have to type out an absolute path each time and hope no typos were made. - Writing the aforementioned path takes too long and breaks my flow state a little bit.
- Neovim does not have a Lua API to read/write sessions.
I created two tiny commands within my init.lua
configuration to save and read session files from my ~/.vim_sessions
directory, but the code is pretty self-contained and it seems like a short leap to making it a stand-alone plugin. So I did.
My first neovim plugin.
Tailscale Personal Network
I have an amateur homelab that runs a few services, and I had to bind them together with a VPN. Tailscale exceeded what I needed at the moment and allowed me to explore a new world of Software Defined Networking. I could easily connect all of my services, implement access control, share files, play Minecraft, route traffic.
Read more about it at my blogpost : https://xingzhi.dev/blog/what-can-you-do-with-tailscale/.
Tiny tmux script to start and kill my development services
I used multiple terminal programs locally on my laptop at my old job. Lazygit, two node servers to run my application and mock server responses, neovim for writing code, another neovim instance for writing notes. So, I wrote a little script that helps me spin them up and down via tmux sessions.
I don't have it on GitHub as of the time of writing.
Browser Extension for controlling YouTube shorts playback with a keyboard
I made a browser extension that controls YouTube Shorts to play forwards and backwards with left/right arrow keys.