If you want a less technical version of this, check out the one on my personal blog here.

Kotlin MultiPlatform has been taking off, and for a while now I’ve felt that it is the most promising multi-platform code-sharing path forward. The problem it attempts to solve is very real, and at Skip Scooters I saw first-hand how expensive it was to write the same business logic three times. Startups want to move quickly, and hiring developers is extremely difficult across all companies — wasting developer time, then, should be a cardinal sin. …

Most services won’t mandate TOTP as the primary 2FA mechanism, but I was recently creating a security-focused application, and given how insecure SMS is as a second-factor mechanism, I felt compelled to make TOTP the only mechanism and to mandate 2FA for all logins.

I briefly considered Auth0, but it turns out one-time passwords aren’t included in their free tier. Fair enough, everyone needs to make a living. Let’s check out their pricing plans to see if it’s reasonable.

Note that it’s not Developer — they strictly mandate the Pro version, at just north of $1,000 each month.

Have you ever noticed that when you visit chrome://settings/searchEngines in your browser, you’ll often see a list of “Other search engines” that are just a list of various websites you’ve visited? Ever wonder how they get added?

A list of “other” search engines, as shown in the Chrome.
A list of “other” search engines, as shown in the Chrome.

There’s even a chrome extension to block them from getting added in the first place! But what exactly do they do, and why do people hate them?

OpenSearch is a standard that allows a website to tell your browser how to search for content within that site. Let’s take Github for example. We see the keyword is github.com . This means that to…

Tailwind.css, my favorite CSS framework, has a pretty good section on how to minify for production builds. The workflow with CreateReactApp, however, needs some polish. This is a quick post demonstrating the integration.

  1. Eject from the Create React App framework
npm run eject

Create React App obfuscates the complexity of webpack and babel by wrapping everything in a set of scripts particular to the CRA environment. Tailwind’s minification, which relies on PurgeCSS under the hood, needs to modify those complex webpack configs that CRA works so hard to hide.

2. Install postcss-purgecss

npm install --save-dev @fullhuman/postcss-purgecss

3. Follow the remaining…

I recently decided to move all my personal projects over to AWS. I wanted to host chander.app on S3 — but keep the domain on Google Domains as much as possible. To minimize domain churn, I like to employ subdomains.

| cs1.chander.app
| cs50.chander.app
| h3.chander.app
| boardgames.chander.app
| ...

This not only saves me money but also allows me to just start coding immediately. Often, I paralyze myself looking through domain registrars as I dream up the name with the highest potential for virality.

Almost all of my side projects are hosted on Github Pages, which is configured…

Chander Ramesh

I dabble in software and writing.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store