<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Smit&#x27;s Blog</title>
      <link>https://smit.codes</link>
      <description>Writing about software development, tools, and projects.</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://smit.codes/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Sun, 17 May 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Why I Switched From Neovim to Zed</title>
          <pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate>
          <author>Smit Patil</author>
          <link>https://smit.codes/writing/switching-to-zed/</link>
          <guid>https://smit.codes/writing/switching-to-zed/</guid>
          <description xml:base="https://smit.codes/writing/switching-to-zed/">&lt;h2 id=&quot;why-i-left-neovim&quot;&gt;Why I Left Neovim&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;m moving away from Neovim. I&#x27;ve used it for a while now and I loved it, heck,
I even made plugins and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;smit4k&#x2F;shale.nvim&quot;&gt;a theme&lt;&#x2F;a&gt; for
Neovim. It&#x27;s just that Neovim became a hassle, even when I got my own setup and
plugins and customized it to my liking, I never once felt like I was getting
work done any faster than if I was using a traditional IDE. So why bother
continuously tinkering if I was going to get marginal, or no improvements in my
work productivity.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m not trying to downplay Neovim by any means, I think it&#x27;s a great tool for
developers who find it useful, and especially those who have mastered the
terminal workflow, but people need to understand that Neovim isn&#x27;t for everyone.
You don&#x27;t automatically become a 10x developer once you switch just because
people online told you to. Some people might find it useful right away and stick
with it, others might need to tinker with it a bunch to get accustomed to it,
and some may not like it at all. It took a while for me to realize Neovim isn&#x27;t
for me. I was trapped under the illusion that it was the only way to go in terms
of boosting productivity, when in reality, productivity depends more on your
habits as a person than the software you use to edit code.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-zed&quot;&gt;Why Zed?&lt;&#x2F;h2&gt;
&lt;p&gt;While I was initially going to just go back to VS Code, I realized there&#x27;s other
competitors -- notably &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zed.dev&quot;&gt;Zed Editor&lt;&#x2F;a&gt;. Built in Rust from the
ground up, Zed felt fast, sleek, lightweight, while covering everything I needed
from a modern editor. It sounded great, so I installed it and tested it. Just
using Zed felt like a breath of fresh air. It was amazing and had the familiar
structure of VS Code but everything was faster and more polished. Everything
just worked, LSPs, themes, extensions, terminal, as well as the agent. This is
it. This is the editor I&#x27;ll stick with.&lt;&#x2F;p&gt;
&lt;p&gt;What stood out the most about Zed to me, was the lack of friction. In Neovim, I
needed to set up multiple different plugins for me to code comfortably, and it
was sometimes janky. In Zed, I could just open up a project, and get working
right away. No need to fiddle around with any plugins.&lt;&#x2F;p&gt;
&lt;p&gt;Everything from the startup time, to the autocomplete, to the built-in terminal
just works. My workflow became much smoother and I ended up being more
productive than if I was still using Neovim.&lt;&#x2F;p&gt;
&lt;p&gt;And for those who also want to switch from Neovim, but are afraid they&#x27;ll miss
the vim bindings, don&#x27;t worry, Zed supports vim keybindings natively! (they work
great!)&lt;&#x2F;p&gt;
&lt;h2 id=&quot;lessons-from-neovim&quot;&gt;Lessons from Neovim&lt;&#x2F;h2&gt;
&lt;p&gt;Even if I&#x27;m moving away from Neovim, I still greatly appreciate all the time
I&#x27;ve spent coding in Neovim. It&#x27;s taught me a lot. It made me more intentional
about how I navigate and edit code, and it made me more curious and open-minded
as a developer. If I didn&#x27;t see a solution, I made my own, and it made me better
at Lua (to a certain extent). I also had plenty of fun making plugins and my own
colorscheme. I don&#x27;t regret using Neovim at all, but at this point in time, Zed
feels like the better tool for me. Maybe i&#x27;ll return to Neovim someday.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Checking out Tangled</title>
          <pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate>
          <author>Smit Patil</author>
          <link>https://smit.codes/writing/tangled-git-forge/</link>
          <guid>https://smit.codes/writing/tangled-git-forge/</guid>
          <description xml:base="https://smit.codes/writing/tangled-git-forge/">&lt;h2 id=&quot;what-is-tangled&quot;&gt;What is Tangled?&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tangled.org&quot;&gt;Tangled&lt;&#x2F;a&gt; is a new git forge, like Github, Gitlab, and Codeberg. The main difference is that Tangled is built on the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;atproto.com&quot;&gt;AT Protocol&lt;&#x2F;a&gt; (like Bluesky) and is partially &lt;strong&gt;decentralized&lt;&#x2F;strong&gt;. The main reasoning behind Tangled is that users can fully own and self-govern their code. The developers hope this will turn coding social and fun again.&lt;&#x2F;p&gt;
&lt;p&gt;Tangled is still &lt;strong&gt;very new&lt;&#x2F;strong&gt;, and every contribution counts, if you&#x27;re interested by the end of reading this article, I suggest you look into contributing to Tangled. I&#x27;ve &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tangled.org&#x2F;tangled.org&#x2F;core&#x2F;pulls?q=author%3Asmit.codes&quot;&gt;contributed to tangled&lt;&#x2F;a&gt; a little bit myself.&lt;&#x2F;p&gt;
&lt;aside class=&quot;callout callout-info&quot;&gt;
&lt;p class=&quot;callout-title&quot;&gt;More about Tangled&lt;&#x2F;p&gt;
&lt;div class=&quot;callout-body&quot;&gt;
&lt;p&gt;If you would like to learn more about Tangled, you can check out their own blog post &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.tangled.org&#x2F;intro&#x2F;&quot;&gt;here&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;aside&gt;
&lt;h2 id=&quot;why-tangled-caught-my-attention&quot;&gt;Why Tangled Caught My Attention&lt;&#x2F;h2&gt;
&lt;p&gt;I found tangled interesting because unlike Github, no one owns your code. Your code is yours entirely, not locked to the platform. Your code ownership is connected with your identity through the AT Protocol. Even if you don&#x27;t like where tangled is going, you can just host your own instance, called a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.tangled.org&#x2F;knot-self-hosting-guide#knot-self-hosting-guide&quot;&gt;knot&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The idea of a &quot;knot&quot; makes the system feel less like one website and more like a network. This helps when it comes to their idea of &quot;reviving social coding&quot;&lt;&#x2F;p&gt;
&lt;p&gt;The social side also stood out to me, while Github feels like an infrastructure with one company, Tangled seems more interested in community and making code feel more personal and social-driven. An example of this I saw was the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.tangled.org&#x2F;vouching&#x2F;&quot;&gt;vouching&lt;&#x2F;a&gt; system. You can vouch or denounce users that you interact with. This helps with avoiding &quot;ai slop&quot; on the platform and further enhances the sense of &quot;community&quot; that tangled is trying to achieve and builds a web of trust.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;it-s-new-and-that-s-a-good-thing&quot;&gt;It&#x27;s New, and That&#x27;s a Good Thing&lt;&#x2F;h2&gt;
&lt;p&gt;Tangled is really new, that&#x27;s not necessarily a bad thing though. While a lot of its infrastructure is still being put in place, they need help from the open-source community. If everyone contributes to Tangled, they can shape the culture and contribute to making Tangled a better software. From my week of being on the platform, I&#x27;ve seemed to love how everything is so far. Mostly everything works perfectly fine. While they lack some support for features on other Git forges, like project management tools, and mature CI&#x2F;CD integrations, the core experience is there, it works and feels surprisingly usable.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;who-and-who-isnt-tangled-for&quot;&gt;Who (and who isnt) Tangled for?&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;ll make this short.
Tangled &lt;strong&gt;is&lt;&#x2F;strong&gt; for...&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;people who contribute to open-source&lt;&#x2F;li&gt;
&lt;li&gt;people who like decentralized software and self-hosting&lt;&#x2F;li&gt;
&lt;li&gt;people who enjoy social coding&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Tangled &lt;strong&gt;is not&lt;&#x2F;strong&gt; for...&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;teams that want a &quot;Github clone&quot;&lt;&#x2F;li&gt;
&lt;li&gt;people who want an isolated forge&lt;&#x2F;li&gt;
&lt;li&gt;people who do not want dependency on the AT Protocol&lt;&#x2F;li&gt;
&lt;li&gt;people who want private repositories (for now)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;why-you-should-care&quot;&gt;Why You Should Care&lt;&#x2F;h2&gt;
&lt;p&gt;As more and more developers are moving away from Github, it becomes important to explore other options. Tangled is worth paying attention to. The current software development ecosystem is centralized around a few major platforms. It&#x27;s convenient, but it also means our code, identities, projects, and histories depend on these companies we don&#x27;t control. This can especially be seen recently with the controversies surrounding Github. Tangled offers a different direction: what if you code was tied to your identity instead of a platform? This unlocks the potential for social coding, secure accounts and identities and peace of mind knowing a major company doesn&#x27;t own your code. Tangled is a great platform trying to answer that question, and it&#x27;ll only keep getting better.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;final-thoughts&quot;&gt;Final Thoughts&lt;&#x2F;h2&gt;
&lt;p&gt;Tangled isn&#x27;t perfect yet and there&#x27;s still a lot to do, but its a project worth watching. I don&#x27;t think it&#x27;s at a stage where everyone should ditch Github and move over but I would say its worth making an account, pushing a few projects, reading the docs, and exploring the platform. Maybe you&#x27;ll find an issue like I did, and hopefully contribute. And you might find that coding feels a little more personal again.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Codex Is Awesome</title>
          <pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
          <author>Smit Patil</author>
          <link>https://smit.codes/writing/codex-is-awesome/</link>
          <guid>https://smit.codes/writing/codex-is-awesome/</guid>
          <description xml:base="https://smit.codes/writing/codex-is-awesome/">&lt;p&gt;&lt;img src=&quot;&#x2F;imgs&#x2F;codexss.png&quot; alt=&quot;codex cli screenshot&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;&#x2F;h2&gt;
&lt;p&gt;I recently got a one-month free trial to ChatGPT Plus, which included access to
their flagship coding agent, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chatgpt.com&#x2F;codex&quot;&gt;Codex&lt;&#x2F;a&gt;. I&#x27;ve been using
it over the past few weeks, and I wanted to share my experience with the agent.&lt;&#x2F;p&gt;
&lt;p&gt;I started using Codex because I had seen all the hype around people using Claude
Code, Codex, and other agents to rapidly develop, test, and review code for
their applications. This type of productivity was astounding, and I had to take
a look to see what all the hype around coding agents was. Getting a trial for
Codex was my opportunity to do so. It&#x27;s safe to say -- it did not disappoint.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-s-different&quot;&gt;What&#x27;s Different?&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;what-s-an-agent&quot;&gt;What&#x27;s an Agent?&lt;&#x2F;h3&gt;
&lt;p&gt;Codex is a coding AI &lt;strong&gt;agent&lt;&#x2F;strong&gt;, not just a chatbot. It can do more than just
answer questions. When I&#x27;m using it through the Codex CLI, it runs on my device
and has access to the files in my project. That means it can inspect my
codebase, make edits, run commands, and continuously plan and iterate toward a
goal. Essentially -- it can perform tasks on my computer for me. If you want to
learn more, you can read
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.ibm.com&#x2F;think&#x2F;topics&#x2F;ai-agents&quot;&gt;this article&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Agents also have features that normal chatbots usually do not, such as &lt;strong&gt;agent
skills&lt;&#x2F;strong&gt;, &lt;strong&gt;MCP servers&lt;&#x2F;strong&gt;, and &lt;strong&gt;hooks&lt;&#x2F;strong&gt;. These make agents more customizable
and better at working inside specific workflows, helping them truly integrate as
part of the development process. I will talk more about these later.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;why-is-it-different&quot;&gt;Why Is It Different?&lt;&#x2F;h3&gt;
&lt;p&gt;Unlike copy-pasting code from ChatGPT into my IDE or coding manually, Codex
dramatically sped up the process. When I&#x27;m working on a project, I can just use
the Codex CLI to plan out the implementation of a feature, and Codex will come
up with a plan, edit files to make changes, run tests, and iterate until the
feature is implemented. I can ask it to make adjustments or give it design
specifications, and it will consider those and make changes accordingly. The big
difference is that it helps me move from idea to implementation significantly
faster than if I were simply coding manually.&lt;&#x2F;p&gt;
&lt;p&gt;Codex has helped me greatly with implementing new features, debugging errors,
refactoring messy code, and writing docs.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;my-workflow&quot;&gt;My Workflow&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;I write a clear specification of the feature I want implemented. I make sure
it&#x27;s not too broad or too narrow so Codex can do its best work.&lt;&#x2F;li&gt;
&lt;li&gt;If Codex has not indexed the repo before, I will run &lt;code&gt;&#x2F;init&lt;&#x2F;code&gt; to create an
&lt;code&gt;AGENTS.md&lt;&#x2F;code&gt; file, so Codex understands the codebase.&lt;&#x2F;li&gt;
&lt;li&gt;In Plan mode, I will give it the spec and Codex will generate a plan. I&#x27;ll
review the plan to make sure it looks good. Plan mode should definitely be
run with high reasoning. If the feature is complex, I will ask Codex to
utilize subagents.&lt;&#x2F;li&gt;
&lt;li&gt;Codex implements the plan across the codebase.&lt;&#x2F;li&gt;
&lt;li&gt;Test the feature. If anything seems off, re-prompt Codex with the specific
issue.&lt;&#x2F;li&gt;
&lt;li&gt;Ask Codex to run tests, clean up the implementation, and simplify the code.&lt;&#x2F;li&gt;
&lt;li&gt;Manually review the diff to ensure the code is correct, readable, and aligned
with the project.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;skills-mcp-servers-and-hooks&quot;&gt;Skills, MCP Servers, and Hooks&lt;&#x2F;h3&gt;
&lt;p&gt;I use various &lt;strong&gt;skills&lt;&#x2F;strong&gt;, from frontend design to documentation workflows and
git commit messages. Skills are useful because they let Codex follow reusable
instructions for specific tasks instead of me redundantly typing in the same
instructions every time. The extra context helps it become a &quot;master&quot; in the
task it&#x27;s doing.&lt;&#x2F;p&gt;
&lt;aside class=&quot;callout callout-info&quot;&gt;
&lt;p class=&quot;callout-title&quot;&gt;Want to find skills?&lt;&#x2F;p&gt;
&lt;div class=&quot;callout-body&quot;&gt;
&lt;p&gt;You can find a whole list of skills here: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;skills.sh&quot;&gt;skills.sh&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;aside&gt;
&lt;p&gt;&lt;strong&gt;MCP servers&lt;&#x2F;strong&gt; are also useful because they let Codex access external tools and
data sources. They let it pull data from other sources, not just the codebase,
which makes it smarter and lets it interact with other systems, like Figma or
GitHub.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hooks&lt;&#x2F;strong&gt; are also a powerful part of the workflow because they let Codex run
commands automatically, every single time. An example of a hook would be: after
a feature implementation, Codex can run a linter and formatter to automatically
lint and format the code. This helps keep the codebase clean and Codex will do
it every time.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-codex-does-well&quot;&gt;What Codex Does Well&lt;&#x2F;h2&gt;
&lt;p&gt;Codex works best when I have a clear idea of what I want but need help turning
that idea into working code. It&#x27;s really good at taking a specification,
indexing the codebase, figuring out a plan, and implementing that plan by
identifying which files need to change.&lt;&#x2F;p&gt;
&lt;p&gt;Codex is also excellent when reviewing code generated by other people and agents
(like Claude Code). It can catch subtle details within the code that are easy to
miss, such as inconsistent patterns, unnecessary complexity, or code that
doesn&#x27;t fit the styling of the project.&lt;&#x2F;p&gt;
&lt;p&gt;Codex is also great with debugging and cleanup. It can read error messages,
inspect the related code, find the issue causing the error, and suggest or apply
a fix. It&#x27;s also a big help in refactoring messy code: it helps simplify
functions, update documentation, and optimize code.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;real-example-refactoring-conversia&quot;&gt;Real Example: Refactoring Conversia&lt;&#x2F;h3&gt;
&lt;p&gt;Codex greatly helped me when it came to refactoring my project,
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;smit4k&#x2F;conversia&quot;&gt;conversia&lt;&#x2F;a&gt;, a Discord bot focused on file
utilities. I used Codex to come up with a plan to refactor my codebase for
improved performance, security, and readability. Codex changed files, iterated
through the plan and utilized subagents and successfully turned hours-long work
into just a few minutes. The code had left the codebase neatly organized, safer,
faster and much easier to maintain. And it did so while only taking up about 8%
of my 5-hour usage! This degree of productivity is exactly why Codex has become
such a useful part of my workflow.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-i-prefer-codex-for-my-workflow&quot;&gt;Why I Prefer Codex for My Workflow&lt;&#x2F;h2&gt;
&lt;p&gt;I know people are pretty split between Codex and Claude Code, but here are a few
reasons why I prefer Codex for my workflow:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Higher usage limits, and usage limits aren&#x27;t shared between chatgpt.com and
Codex.&lt;&#x2F;li&gt;
&lt;li&gt;Nicer CLI&#x2F;TUI. The Codex CLI is
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;openai&#x2F;codex&quot;&gt;open-sourced&lt;&#x2F;a&gt;, written in Rust, and it
feels much more polished than Claude Code.&lt;&#x2F;li&gt;
&lt;li&gt;ChatGPT Plus gives you access to custom GPTs, and image generation.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Overall, Codex is a better fit for my workflow. It&#x27;s a strong coding agent with
great capabilities.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-codex-still-needs-help-with&quot;&gt;What Codex Still Needs Help With&lt;&#x2F;h2&gt;
&lt;p&gt;Believe it or not, AI agents are &lt;strong&gt;not&lt;&#x2F;strong&gt; perfect. I still often see Codex
needing help with these things:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Frontend design. While Codex can build functional frontend code, from my
experience, Claude is better in this regard.&lt;&#x2F;li&gt;
&lt;li&gt;Vague prompts. This is a problem with every agent, but Codex does not know how
to handle vague prompts very well.&lt;&#x2F;li&gt;
&lt;li&gt;Super complicated prompts. It struggles with prompts that are too complicated
or prompts that try to solve too many things at once.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;Codex is a great tool, but it simply isn&#x27;t a replacement for understanding code.
It works best when I know what to build, can review Codex&#x27;s changes, and can
guide it. That&#x27;s what makes Codex so useful to me. It doesn&#x27;t completely remove
the programmer from the process -- it simply makes the implementation loop
faster. I spend less time fighting boilerplate, syntax errors, and repetitive
code, and I can spend that time thinking about the actual problem I&#x27;m trying to
solve.&lt;&#x2F;p&gt;
&lt;p&gt;The devs who get the most out of Codex are not the &lt;em&gt;&quot;vibe coders&quot;&lt;&#x2F;em&gt;, they&#x27;re the
problem solvers who understand code and use agents to move faster.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>My Coding Setup</title>
          <pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate>
          <author>Smit Patil</author>
          <link>https://smit.codes/writing/my-coding-setup/</link>
          <guid>https://smit.codes/writing/my-coding-setup/</guid>
          <description xml:base="https://smit.codes/writing/my-coding-setup/">&lt;h2 id=&quot;hardware&quot;&gt;Hardware&lt;&#x2F;h2&gt;
&lt;p&gt;I primarily do most of my coding on my Macbook Air M2. It&#x27;s a fantastic laptop
for coding (as well as schoolwork), and I can do everything I need to with ease.
Sometimes I use my old Microsoft Surface Laptop Go with Arch Linux and Hyprland,
but it&#x27;s not common for me to use it. As per my headphones, I use the AirPods
Pro 2. It has great audio quality, bass, and noise cancellation — A must have
for coding especially in distracting environments.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;software&quot;&gt;Software&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;ide&quot;&gt;IDE&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;del&gt;I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;neovim.io&quot;&gt;Neovim&lt;&#x2F;a&gt; btw, and it&#x27;s a great IDE. I started by using
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lazyvim.org&quot;&gt;LazyVim&lt;&#x2F;a&gt; and configured it from there, adding my own
plugins, themes and changing settings to make it more comfortable to use. You
can find my entire Neovim config in my
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;smit4k&#x2F;.dotfiles&quot;&gt;.dotfiles&lt;&#x2F;a&gt;&lt;&#x2F;del&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I use Zed editor. It is fast, good looking and feature-full. If you want to know why I switched from Neovim, read &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;smit.codes&#x2F;writing&#x2F;switching-to-zed&quot;&gt;this article&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;For fonts, I prefer the JetBrainsMono Nerd Font. In my experience, it&#x27;s an
amazing font that&#x27;s highly readable and aesthetically pleasing. I use the Nerd
Font simply because I use Neovim and require Nerd Fonts for my setup.&lt;&#x2F;p&gt;
&lt;p&gt;I usually use either the VSCode Dark Modern theme or my own Shale theme.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;terminal&quot;&gt;Terminal&lt;&#x2F;h3&gt;
&lt;p&gt;I use the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ghostty.org&quot;&gt;Ghostty&lt;&#x2F;a&gt; terminal with
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;starship.rs&quot;&gt;starship&lt;&#x2F;a&gt; prompts. I usually use the
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fishshell.com&quot;&gt;fish shell&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;browser&quot;&gt;Browser&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;del&gt;I use &lt;a href=&quot;https:&#x2F;&#x2F;smit.codes&#x2F;writing&#x2F;my-coding-setup&#x2F;zen-browser.app&quot;&gt;Zen&lt;&#x2F;a&gt; browser. There&#x27;s no real reason why, I just
wanted a Firefox based browser and Zen looked pretty nice.&lt;&#x2F;del&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;helium.computer&quot;&gt;Helium Browser&lt;&#x2F;a&gt;. It&#x27;s based on chromium, it&#x27;s
fast and its bloat-free.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;design&quot;&gt;Design&lt;&#x2F;h3&gt;
&lt;p&gt;Whenever I need to work on designing UI, I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;figma.com&quot;&gt;Figma&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;languages&quot;&gt;Languages&lt;&#x2F;h2&gt;
&lt;p&gt;For most of my work, I use Rust as my preferred programming language (CLIs,
utilities, backend etc.). When I&#x27;m working on websites, I tend to use SvelteKit.
I&#x27;ve tried React and hated it, and so Svelte seems to be the perfect web
framework for me. In fact, this website is made with a Svelte front-end and a
Rust powered backend!&lt;&#x2F;p&gt;
&lt;p&gt;I also use Java when Minecraft modding.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>The Making of LQF</title>
          <pubDate>Sat, 26 Jul 2025 00:00:00 +0000</pubDate>
          <author>Smit Patil</author>
          <link>https://smit.codes/writing/making-of-lqf/</link>
          <guid>https://smit.codes/writing/making-of-lqf/</guid>
          <description xml:base="https://smit.codes/writing/making-of-lqf/">&lt;h3 id=&quot;how-it-started&quot;&gt;How it Started&lt;&#x2F;h3&gt;
&lt;p&gt;We all know JSON, YAML, and TOML. They&#x27;re popular configuration languages.
They&#x27;re great, don&#x27;t get me wrong, but I wanted something different, something a
bit more simple, readable, uniform, and most importantly, something
&lt;em&gt;aesthetically pleasing&lt;&#x2F;em&gt;. I also had a lot of time to spend, as it was the end
of the school year and all of my exams were over, so this was the perfect time
to make my own configuration language, LQF, the Lightweight Quick Format,&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-design&quot;&gt;The Design&lt;&#x2F;h3&gt;
&lt;p&gt;I wanted LQF to be extremely simple and revolve around a singular symbol. The
symbol of choice is one of my favorite symbols, the &lt;code&gt;&amp;gt;&lt;&#x2F;code&gt; (greater than operator).
It represents an arrow to the right, and it&#x27;s very readable.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-basics&quot;&gt;The Basics&lt;&#x2F;h3&gt;
&lt;p&gt;A configuration language needs to have &lt;strong&gt;sections&lt;&#x2F;strong&gt; and &lt;strong&gt;assignments&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;sections&quot;&gt;Sections&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;strong&gt;Sections&lt;&#x2F;strong&gt; begin with a &lt;code&gt;&amp;gt;&lt;&#x2F;code&gt; followed immediately by a section name.&lt;&#x2F;p&gt;
&lt;p&gt;Example:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;gt; settings&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;assignments&quot;&gt;Assignments&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;strong&gt;Assignments&lt;&#x2F;strong&gt; are key-value pairs within a section. You can assign using &lt;code&gt;&amp;gt;&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Example:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;username &amp;gt;&amp;gt; &amp;quot;smit4k&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;active &amp;gt;&amp;gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;comments&quot;&gt;Comments&lt;&#x2F;h4&gt;
&lt;p&gt;Another feature that configuration languages have are &lt;strong&gt;comments&lt;&#x2F;strong&gt;. &lt;strong&gt;Comments&lt;&#x2F;strong&gt;
in LQF start with &lt;code&gt;#&lt;&#x2F;code&gt; and continue to the end of the line.&lt;&#x2F;p&gt;
&lt;p&gt;Example:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# This is a comment&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;supported-values&quot;&gt;Supported Values&lt;&#x2F;h4&gt;
&lt;p&gt;LQF supports a lot of values, when assigning a key to a value. Read the table
below for more info:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Type&lt;&#x2F;th&gt;&lt;th&gt;Syntax Example&lt;&#x2F;th&gt;&lt;th&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;String&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;&quot;Hello, world!&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;Double-quoted text&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Number&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;42&lt;&#x2F;code&gt;, &lt;code&gt;3.14&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;Integers, Floating points&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Boolean&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;true&lt;&#x2F;code&gt;, &lt;code&gt;false&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;Logical values&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Null&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;null&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;Null value&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Array&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;[1, 2, 3]&lt;&#x2F;code&gt;, &lt;code&gt;[&quot;a&quot;, &quot;b&quot;]&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;Comma-separated list of values inside square brackets&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;that-s-it&quot;&gt;That&#x27;s It&lt;&#x2F;h3&gt;
&lt;p&gt;That&#x27;s the entire language, as of now. It&#x27;s essentially completed. It&#x27;s
&lt;strong&gt;simple&lt;&#x2F;strong&gt;, &lt;strong&gt;readable&lt;&#x2F;strong&gt;, and looks &lt;strong&gt;awesome&lt;&#x2F;strong&gt; (in my opinion). I&#x27;m really
happy with how it turned out.&lt;&#x2F;p&gt;
&lt;p&gt;If you would like to &lt;strong&gt;contribute&lt;&#x2F;strong&gt; to the language, you can check out the
specifications in my Github repo,
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;smit4k&#x2F;lqf-spec&quot;&gt;smit4k&#x2F;lqf-spec&lt;&#x2F;a&gt;, all of the info about the
language is there.&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s a full example file for you to enjoy&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# Example LQF file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# Designed by smit4k (smit@smit.codes)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;gt; server&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;host &amp;gt;&amp;gt; &amp;quot;localhost&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;port &amp;gt;&amp;gt; 8080&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;use_ssl &amp;gt;&amp;gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;gt; database&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;engine &amp;gt;&amp;gt; &amp;quot;postgres&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;host &amp;gt;&amp;gt; &amp;quot;db.internal&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;port &amp;gt;&amp;gt; 5432&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;username &amp;gt;&amp;gt; &amp;quot;admin&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;password &amp;gt;&amp;gt; &amp;quot;s3cr3t&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;max_connections &amp;gt;&amp;gt; 20&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;gt; features&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;enabled &amp;gt;&amp;gt; [&amp;quot;search&amp;quot;, &amp;quot;analytics&amp;quot;, &amp;quot;dark_mode&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;beta &amp;gt;&amp;gt; false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;gt; logging&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;level &amp;gt;&amp;gt; &amp;quot;info&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;file &amp;gt;&amp;gt; &amp;quot;logs&#x2F;app.log&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;gt; cache&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;backend &amp;gt;&amp;gt; &amp;quot;redis&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;ttl_seconds &amp;gt;&amp;gt; 3600&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;enabled &amp;gt;&amp;gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;gt; meta&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;version &amp;gt;&amp;gt; &amp;quot;1.0.0&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;maintainers &amp;gt;&amp;gt; [&amp;quot;bob@example.com&amp;quot;, &amp;quot;gus@example.com&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</description>
      </item>
    </channel>
</rss>
