Welcome to my dev journal. I mostly write about python and machine learning stuff.
Websocket
If you go through weboscket.org, you will see the essential events are onopen, onmessage, onerror, onclose. Naively I assumed that authentication should happen in onopen event. But this resulted in an unanticipated security breach. But first the normal web requests. In a normal requests, I can send custom headers like Authorization: Bearer token. This works, because the browser makes the preflight request, asking the server "I am about to make this request with this header and this method, do you allow it?". At this stage the server can reject this request, if either the method or the header doesn’t exist. ...
Cognitive Load
With the recent update of claude (which is a significant improvement), like many, my programming style has also changed. Unlike the old days (it’s just been a few weeks, and it’s already old), I don’t write code “manually”, like laboriously typing def before every function — I simply ask claude to do it. Even for the smallest of tasks, I would much rather type "please commit the recent changes and push to remote" instead of git add . && git commit -m "(wip)" && git push. In other words, I have completely shifted to “Agentic Coding”. The advantages are clear: I am certainly writing more code and shipping faster, plus while claude is thinking and writing the code, I get mini breaks to scroll through Instagram slop. ...
How to set up a JavaScript/TypeScript project
Running a Javascript file Suppose you have a javascript file that you want to run from the command line. Install node or deno Run the file with node <filepath.js> or deno <filepath.js> or deno run <filepath.js> Running a TypeScript file Suppose you have a typescript file that you want to run from the command line. Install node. npm comes bundled with node. Install the typescript compiler with npm install -g typescript. Note that this will install the latest version of typescript compiler globally. Compile the file with tsc <filepath.ts> Run the file with node <comiled-filepath.js> Alternatively, you can install the ts-node package with npm install -g ts-node. This will install the latest version of ts-node globally. ts-node compiles the file on the file and executes it. ts-node <filepath.ts> Running a Javascript project The project directory must have a package.json file. This file is used by npm and can also be used to define additional information if you plan to publish the module to npm registry. Install the dependencies mentioned in the package.json file with npm install, more details about package.json The package.json file have a scripts section, this defines the commands that can be run with npm run <command>. In this section, you can define commands like start: node index.js; test: jest ., then if you run npm run test it will run the tests. Note, npm defines three commands which can be run without using the run command, npm start, npm test and npm stop. The start command defaults to using index.js file The package.json file has a main field, this is the file that is executed when you import the package in another file. By default, npm treats the imports as CommonJS modules, if you are using ES modules, you need to add the type key in your package.json with value module. Then all files must use import/export syntax. { name: "my-package", version: "1.0.0", main: "index.js", scripts: { start: "node index.js", test: "jest .", }, type: "module", dependencies: { jest: "^27.5.1", }, } Running a TypeScript project Using ts-node [!NOTE] You can avoid using ts-node and use tsx which supports TypeScript out of the box. No need to add additional support for esm modules ...
All the ways to `git add`
I always get confused with, should I run git add ., or should I run git add --all, or should I run git add -A? Given all these commands, do a similar thing, confusion is bound to happen. Thankfully, it’s not just me. So I decided to take a deep dive into add command of git, to end this confusion once and for all. What does add even do? The add command adds your changes to staging area. Staging area is a buffer zone where you place your files before committing them. This buffer zone allows you to be selective with your commits, there are some files that you want to commit now and some files that you want to commit later. Staging area is also known as index. ...
How to parse json in terminal using jq
A practical tutorial on jq So here’s the problem statement: Find the repository on github in which you have made most number of commits? And you need to do this on terminal (no python) Ofcourse, one can use python to find the answer, and it might be probably easy for you, if you have been using python for last many years. But let’s see if I can do this in terminal with jq and while doing so, let’s learn about it. ...