Software

An overview of my software projects

This is just a small list of projects that I have worked on. For more, head over to my GitHub profile.

Website(s)

My main website (this one), is a static website that is generated using Hugo and deployed on Cloudflare Pages. This is my third iteration, and I am probably going to keep this as the final version.

I have separated my blog to an independent WordPress instance. Using Markdown is good for things that I want to have full control over. However, in order to write consistently, I wanted something more accessible. WordPress was the final choice because I can write from my phone as well.

I have self-hosted a few more things:

  1. A Gitea instance for managing my source code independently of GitHub and GitLab.
  2. (Deprecated: Gitea now has Gitea Actions) A Woodpecker CI CI/CD server that integrates with my Gitea instance for really fast testing and iterations.

Several Projects for V Language

I joined the V Language Discord Server in 2020. I have been fairly active as a contributor and have been involved with the following projects:

  1. The performant XML module written in pure V in encoding.xml.
  2. Reworking the math.fractions module.
  3. Completely overhauling the rand module.
  4. Adding a pure V implementation of BigInteger in math.big.
  5. Contributed to the context-free grammar for V by modifying the tree-sitter-parser grammar.

I intend to continue contributing to V for the forseeable future. I will update my list of contributions accordingly.

whisker

It is inspired by Mustache but is more stable, robust and predictable. It is a fast template engine for V with a simple syntax.

I wrote a blog post detailing why I created whisker on my blog: Announcing whisker.

klonol

A phonetic play on the phrase “clone all”. It is a CLI tool written in V to clone all repositories belonging to you (or the authenticated user).

It was borne out of the need to backup all my repositories from GitHub and Gitea. I wanted to have a local copy of all my repositories, and I wanted to automate the process. This was one of my first useful projects in V.

Another notable fact is that this repository received a source code contribution to replace credential management using environment variables with a configuration file in TOML. The UX improved a lot and I am thankful to the contributor A1ex-N for that.

Confluence

Confluence = Contact + Influence

I divided this project into two parts: the front-end and the back-end.

The Contact Form Front-End

It is a static website hosted on Cloudflare pages at contact.hungrybluedev.in.

Screenshot of the contact form page.
The contact form.

There are several features that I added to this page:

  1. Support for dark mode and light mode.
  2. Responsive design for mobile and desktop.
  3. Spam prevention using hCaptcha.

The NodeJS Back-End

I deployed my contact form backend on Render’s free tier. It makes use of the following technologies:

  1. TypeScript - I prefer having static typing in my projects. Helps to prevent a lot of errors from reaching production.
  2. Node.js - Render supports Node.js and I wanted to try it out.
  3. Express - I liked the simplicity of the framework and the ease-of-use when adding custom middleware.
  4. MongoDB - My application needs to keep track of who sent what message, and when it was sent. Additionally, people who are banned should not be able to send me messages.
  5. hCaptcha - Server-side validation of the client response.
  6. Additional honeypot field - Just for peace of mind.
  7. Sendinblue - For relaying the message to me (and the sender) via email.