Code Based Solutions for Real World Problems
Just another guy with a passion for all things code related
Hey there,
I‘m Paul Singh
👋
I‘m just another person who loves to write code and travel this glorious planet. I‘ve been building on the web since the days of dial up (jeez, I sound old) and have seen a bucket load of changes along the way
My Tools
Below is a list of the tools which I use on a regular basis and am most comfortable using.
That being said, there is a bunch of tools I use on a regular basis which are not listed below because... you know... space n‘that
Filter Tools
Typescript
TypeScript is by far my preferred language to code with. It provides the utility of JavaScript and the safety of a statically compiled language. Generally speaking, if I am starting a greenfield project it will be with Typescript.languageJavascript
Javascript is a language which I have been using since my early teens. It is one which I like to think I have a wealth of experience in using. Its benefits can also rear their heads as a weakness, however, the majority of these are solved with TypeScript.languageNext JS
Next JS is most definitely my preferred micro framework for React solely due to the fact that I have been using it for many years, thus am most proficient with it. While a controversial topic, I have actually grown to love the new (ish) app router and its implementation of React Server ComponentsframeworkfrontendReact JS
What can I say about React that hasn't already been said? If I am not making a static page/site using vanilla, the chances are I will be using React. I have grown to love its ease of use and plethora of communal tools. As with everything, it has its nuances but that is where the mantra "right tool for the right job" comes inlibraryfrontendShadCN/UI
ShadCN/UI is essentially what made me grow to love Tailwind CSS. I used to avoid UI frameworks in order to keep dependencies low but I have found that ShadCN/UI provides the perfect middle-ground between a component library and doing it yourself.libraryfrontendTailwind CSS
Initially I was not a fan of Tailwind CSS due to the pollution of the HTML class attribute. However, as I have been using it regularly for larger projects at work, I have grown to love it. The extensibility of its config and the consistency it provides are second to none.frameworkfrontendNodeJS
I have a wealth of experience building with the Node JS framework. During my career I have built everything from RESTful APIs to CLI apps and bespoke development frameworks. One thing I love about NodeJS is the fact that it utilises the automatic garbage collection of the JS engine, removing a lot of room for the nastiest of errors when working with the filesystem.frameworkbackendVitest
Vitest has become my defacto unit testing solution over the past year or so. I used to opt for Jest but a series of wonky updates (breaking changes on a patch release) have lead me here. From my experience it seems to have a near 1:1 implementation match but without all the faffing around with config files.frameworktestingWebpack
I've been using webpack for a hot minute and generally will opt for it if there is a need for a complex bundling system. Its extensive list of community built and managed plugins makes it second to none and its flexibility with filetypes means I can do things like import an SCSS file into a JS project then have it processed into a string of CSS without any second thought.bundlerdev toolESLint
ESLint configurations have become somewhat of a knack of mine. As a result of my career path I have been required to create multiple custom configs, plugins and implementations of this bug catching beauty. I dread to think of how many stupid errors I would have shipped if it weren't for that little squiggly red line which pops up when a variable has been misspelled.dev toolGit
I don't know what the state of software engineering would be like if it weren't for Git. Its version control system enables me to keep track of my changes and roll back if needed. It is a life saver. It also provides the grounds for fearless collaboration between team members by preventing conflicting branches from being auto merged.dev toolGitHub Actions
Implementing Github actions on a number of greenfield projects in which I have been involved has been proven to an absolute game changer, especially when combined with branch protection rules to stop dodgy pushes to main.dev toolautomationFigma
Since switching over to Figma from Adobe XD I have found that my productivity and wire-framing abilities have both drastically improved. Using Figma allows me to get mockups made for clients without spending hours writing code.designdev toolPlaywright
I've been using Playwright to scrape websites for quite some time and have used it to make everything from a Webpack plugin which injects code on live websites with auto reloading, to scraping data from a given source.testingdev toolMongo DB
Mongo DB is a great database solution which I often use when I am in need of a non-relational, dynamic and flexible storage solution. The fact that is stores documents as plain JSON objects makes it a perfect candidate for JS based apps.databaseno sqlMySQL
I've been using MySQL for some time, even before I fully understood it (thanks, WordPress). Its relational structure adheres to a strictly defined schema, which enforces a high level of data integrity. While powerful, using it without an ORM can be cumbersome at times.databasesqlPostgreSQL
Postgres is the database I've recently started exploring as a result of trying out Supabase. It offers the same strong data integrity as MySQL but adds functionalities like Row Level Security and the ability to run functions on data Update.databasesqlPrisma
I've found Prisma to be a great solution when interacting with relational databases such as MySQL, SQLite and PostgreSQL. It provides a type-safe environment in which I can interact with strict data structures thus limiting room for error.ormdev toolVanilla
This is essentially the stack I grew up with. I have more experience writing vanilla code than anything else. During my time building A/B tests I really honed my skills in writing with a more traditional stack using standard HTML, CSS and JS.frontendbackend