Visualize JavaScript execution
Found this tool called JSViz that lets you visualize the step-by-step execution for JavaScript programs. It works great for beginners who have just started learning JS.
Short notes, links, and thoughts – shared as I go through my day.
Found this tool called JSViz that lets you visualize the step-by-step execution for JavaScript programs. It works great for beginners who have just started learning JS.
Mozilla recently announced that they are shutting down the Pocket app, which people used to save articles, videos, and other content formats to read later.
I, too, have used the app in the past but do not use anymore (I'm more of an RSS guy now, I do not save to read later). At a point, Mozilla integrated the Pocket app to the Firefox browser by default, in fact, they do this to this day.
But they would be shutting down everything except the Pocket newsletter, it will continue sending issues under a different name. And the main reason for closing the app they give is:
[...] the way people save and consume content on the web has evolved [...]
You had a good run, Pocket.
I really really love memes, the funny ones. And funny memes are rare, so I have started collecting the ones that really made me laugh at some point. I'm saving them on a separate meme page here.
These memes would be related to tech, most of the time.
Kailash Nadh, Zerodha's CTA, has written an interesting blog post about MCP where he presents different scenarios of how MCP can be used, and also talks about the rapid adoption.
The funny thing is, as a technical construct, there is nothing special about MCP. It is a trivial API spec which has in fact suffered from poor design and fundamental technical and security issues from the get go. It does not matter if its internals change, or it even outright gets replaced by some XYZ tomorrow. Questions about privacy, security, correctness, and failures will continue to loom for a good while, irrespective of whether it is technically MCP or XYZ.
He talks about how, traditionally, connecting different software systems required extensive manual coding but MCP allows connecting services instantly.
I liked that he also talked about the concerns, as he worries about:
One might imaginatively call it … SkyNet.
He also playfully compares MCP to SkyNet while calling it a "global, interconnected, self-organising meta system".
Overall, it's a balanced post sharing his technical excitements with genuine concerns about such AI systems getting full access to real-world services and decision-making power.
By the way, I almost forgot to mention that Zerodha itself has launched Kite MCP a few days ago.
In an unreleased blog post, Remix.run has mentioned that they are moving on from React to a completely new thing, as a person pointed out on X. And I think, this will be a huge step.
In this .md file, they mention that:
That's why Remix is moving on from React[...]
Remix v3 is a completely new thing. It's our fresh take on simplified web development with its own rendering abstraction in place of React.
Inspired by all the great tech before it (LAMP, Rails, Sinatra, Express, React, and more), we want to build the absolute best thing we know how to build with today's capable web platform.
This requires a declaration of independence from anybody else's roadmap.
They mention that they are not ready for a preview release yet, but this is the route that they are taking forward. They have really bold claims in the blog post that you must go through.
Anthropic just launched their most awaited Claude 4 Opus and Claude 4 Sonnet models. They tweeted:
Introducing the next generation: Claude Opus 4 and Claude Sonnet 4.
Claude Opus 4 is our most powerful model yet, and the world’s best coding model.
Claude Sonnet 4 is a significant upgrade from its predecessor, delivering superior coding and reasoning.
Claude 4 Sonnet is for "near instant response" whereas Claude 4 Opus is for extended thinking and deeper reasoning. And they both are significantly better than Claude's previous models as well as OpenAI's and Google's latest models (OpenAI Codex-1, OpenAI o3, OpenAI GPT-4.1, and Google Gemini 2.5 Pro) in terms of software engineering.
Starting today, Claude 4 Opus is available for the paid users and Claude 4 Sonnet is available for free users as well on claude.ai.
The SEO landscape is changing and it's going to be heavily influenced by AI in the coming years. And here is a list of some really useful research papers that one should study to stay relevant.
I asked Grok 3 DeeperResearch tool to find a list of technologies throughout the history that have claimed to replace software engineers, and it did pull up some cool mentions:
Please note that these are completely AI-generated, I haven't edited a single thing here.
I came across a very interesting LinkedIn post by Judah Diament where he makes a point that vive coding won't be replacing software engineers. Below are some interesting fragments of the post:
Vibe coding enables people who aren't well trained computer scientists to create complete, working applications. Is this a breakthrough? Not even close - there have been such tools since the late 1980s. See, for example: Apple HyperCard, Sybase PowerBuilder, Borland Delphi, FileMaker, Crystal Reports, Macromedia (and then Adobe) Flash, Microsoft VisualBasic, Rational Rose and other "Model Driven Development" tools, IBM VisualAge, etc. etc. And, of course, they all broke down when anything sightly complicated or unusual needs to be done (as required by every real, financially viable software product or service), just as "vibe coding" does.
Then he goes on to explaining why vibe coding won't be replacing software engineers:
To claim that "vibe coding" will replace software engineers, one must: 1) be ignorant of the 40 year history of such tools or 2) have no understanding of how AI works or 3) have no real computer science education and experience or 4) all of the above, OR, most importantly, be someone trying to sell something and make money off of the "vibe coding" fad.
I like how the last paragraph is framed, it's definitely some food for thought.
I collected a list of 28 less known but very useful HTML tags:
abbrMarks abbreviations and shows full form on hover.
Example:
HTMLHTML:
<abbr title="HyperText Markup Language">HTML</abbr>
bdiIsolates text that may have different writing directions.
Example:
User علي logged in.HTML:
User <bdi>علي</bdi>
outputShows the result of a calculation or user input.
Example:
+ =HTML:
<form oninput="result.value=parseInt(a.value)+parseInt(b.value)">
<input name="a" type="number" value="3"> +
<input name="b" type="number" value="4"> =
<output name="result">7</output>
</form>
citeUsed to reference the title of a work like a book, movie, article, or website. Usually shown in italics by browsers.
Example:
The Great Gatsby is a novel by F. Scott Fitzgerald.HTML:
<p><cite>The Great Gatsby</cite> is a novel by F. Scott Fitzgerald.</p>
addressUsed to provide contact details for a person, group, or organization. Usually displayed in italics and often used in footers.
Example:
Contact us at support@example.comHTML:
<p><address>Contact us at support@example.com</address></p>
dfnMarks the term being defined, often used in technical writing.
Example:
Latency is the delay before a transfer of data begins.HTML:
<dfn>Latency</dfn>
delUsed to mark removed text. Often shown with a strike-through.
Example:
This wasHTML:
<p>This was <del>removed</del>.</p>
dl + dt + ddUsed to list terms and their descriptions. <dl> wraps the whole list, <dt> defines the term, and <dd> gives the description.
Example:
HTML:
<dl>
<dt>HTML</dt>
<dd>A markup language for web pages.</dd>
<dt>CSS</dt>
<dd>Used to style HTML content.</dd>
</dl>
bdoForces a section of text to display in a specified direction.
Example:
Hello WorldHTML:
<bdo dir="rtl">Hello World</bdo>
details + summaryCreates a collapsible content box that can be expanded by the user.
Example:
HTML:
<details>
<summary>Click to expand</summary>
This text is hidden until clicked.
</details>
fieldset + legendGroups related form inputs and adds a caption using <legend>.
Example:
HTML:
<fieldset>
<legend>Login</legend>
<input type="text" placeholder="Username">
<input type="password" placeholder="Password">
</fieldset>
hgroupGroups a set of headings (like h1 to h6) when a heading has a subtitle or multiple levels. Helps with document outline.
Example:
HTML:
<hgroup>
<h1>Main Title</h1>
<h2>Subtitle</h2>
</hgroup>
templateStores HTML that is not rendered until used with JavaScript.
Example:
This is hidden and not rendered.
HTML:
<template>
<p>This is hidden and not rendered.</p>
</template>
markUsed to highlight part of text, often shown with yellow background.
Example:
This is important text.HTML:
<p>This is <mark>important text</mark>.</p>
qUsed for short quotations that are displayed inline. Browsers usually add quotation marks automatically.
Example:
She said,Always write clean code.
HTML:
<p>She said, <q>Always write clean code.</q></p>
insUsed to mark text that was added later. Often shows as underlined.
Example:
This is new text.HTML:
<p>This is <ins>new</ins> text.</p>
kbdUsed to show keyboard input, like shortcuts or key presses.
Example:
Press Ctrl + VHTML:
<kbd>Ctrl</kbd> + <kbd>V</kbd>
optgroupUsed to group related options inside a <select> dropdown, making it easier for users to choose from categorized lists.
Example:
HTML:
<select>
<optgroup label="Fruits">
<option>Apple</option>
<option>Banana</option>
</optgroup>
</select>
sampRepresents output from a program, like an error or log message.
Example:
Login failed: incorrect passwordHTML:
<samp>Login failed: incorrect password</samp>
progressShows progress of a task like loading or uploading.
Example:
HTML:
<progress value="40" max="100"></progress>
ruby + rt + rpUsed in East Asian text to show pronunciation hints.
Example:
漢字HTML:
<ruby>漢<rt>kan</rt>字<rt>ji</rt></ruby>
noscriptDisplays content only if JavaScript is disabled in the browser.
Example:
HTML:
<noscript>JavaScript is disabled in your browser.</noscript>
subDisplays text lower and smaller than the baseline, commonly used in chemical formulas or math expressions.
Example:
H2OHTML:
<p>H<sub>2</sub>O</p>
supDisplays text higher and smaller than the baseline, often used for exponents or footnotes.
Example:
E = mc2HTML:
<p>E = mc<sup>2</sup></p>
timeRepresents a specific time or date, useful for events or timestamps.
Example:
HTML:
<time datetime="2025-05-18">May 18, 2025</time>
meterDisplays a value inside a known range, like disk or battery levels.
Example:
HTML:
<meter value="0.6">60%</meter>
varUsed to show variables in math or programming context.
Example:
x + y = 10HTML:
<var>x</var> + <var>y</var> = 10
wbrSuggests a possible break point in a long word or URL.
Example:
www.exampleHTML:
www.example<wbr>long<wbr>word.com
"Comedy hits you in the head, drama hits you in the heart. If you want people to remember your work, you need both: comedy to lower their guard, drama to make them feel."
– Michael Jamin, a Hollywood screenwriter
OpenAI launches Codex, a cloud-based agent that writes code and works on multiple tasks at once. It's just launched, and can be accessed from inside ChatGPT at chatgpt.com/codex but visiting this URL just redirected me back to ChatGPT as it's only for ChatGPT Pro users, and not Plus users.
Currently, it's in a research preview but it's said to have features like:
The implementation is very interesting as it runs in its own cloud sandbox environment, and can be directly connected to your GitHub repo. It performs better than o1-high, o4-mini-high, and o3-high.
The cool thing is, it can also be guided by an AGENTS.md file placed within the repository. Very cool.
Today, we’re also releasing a smaller version of codex-1, a version of o4-mini designed specifically for use in Codex CLI.
Yes, they're also releasing something for Codex CLI as well. And about the pricing and availability:
Starting today, we’re rolling out Codex to ChatGPT Pro, Enterprise, and Team users globally, with support for Plus and Edu coming soon. [...] We plan to expand access to Plus and Edu users soon.
For developers building with codex-mini-latest, the model is available on the Responses API and priced at $1.50 per 1M input tokens and $6 per 1M output tokens, with a 75% prompt caching discount.
I am excited to see how this compares to Claude 3.7 Sonnet and Gemini 2.5 Pro in terms of coding, fixing bugs, designing UI, etc. I also uploaded a quick video about the same that you can watch on YouTube.
I have been coming across a lot of cool MCP server while browsing the internet, so decided to create a dedicated page and keep collecting MCPs here. I have a JSON file where I can add the new MCP servers, and it will automatically show in the card format here.
Lets you query data from 200+ sources like Slack and Gmail in both SQL and natural language
Enables LLMs to interact with web pages through structured accessibility snapshots
I will keep updating this list as I discover more such MCPs.
Connecting ChatGPT to Airtable gives you the superpower to get answers to 100s of questions in no time. Here's how to do that:
You need the following things to be able to connect ChatGPT to Airtable:
And below is the function that you can use to call the OpenAI from inside the Airtable and get the output.
async function getGPTResponse() {
const userInput = "why is the sky blue?";
const maxTokens = 500;
const temperature = 0.7;
const model = "gpt-4.1";
const systemPrompt = "be precise";
const messages = [
{ role: "system", content: systemPrompt },
{ role: "user", content: userInput },
];
const res = await fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${openaiApiKey}`,
},
body: JSON.stringify({
model,
messages,
max_tokens: maxTokens,
temperature,
}),
});
const data = await res.json();
return data.choices?.[0]?.message?.content || null;
}
Here, userInput is the prompt that you give AI, maxTokens is the max tokens for the model, temperature is model temperature, and systemPrompt is the system prompt. The prompt here is hardcoded, but you can modify the script to dynamically fetch prompts from each row and then get the outputs accordingly.
ChatGPT is very good at doing this implementation as per your base data, you can just give the above script and other details in the prompt, and it will give you the final code that you can put inside the Scripting extension.
Also, there's a generic version of this script at InvertedStone that you can also get and use. You can generate almost any kind of content using this script, not just from ChatGPT but also from other AI models like Claude, Gemini, Perplexity, and more.
The ultimate test of whether I understand something is if I can explain it to a computer. I can say something to you and you’ll nod your head, but I’m not sure that I explained it well. But the computer doesn’t nod its head. It repeats back exactly what I tell it. In most of life, you can bluff, but not with computers.
– Donald Knuth
Saw a person editing 3D shapes using hand gestures in front of the webcam. The demo is built using Three.js, WebGL, and MediaPipe.
He has also shared the GitHub repo containing the entire code which is basically a 300 lines of main.js file and a simple index.html file.
Came to know that Google Docs now has a "Copy as Markdown" and "Paste from Markdown" option under the Edit menu at the top. You can select some text to highlight the copy option and then any Markdown is also pasted in the document with proper formatting.
Very cool!
By the way, Google Docs already had the option to download the entire document as a .md file, but these copy and paste options are even more user friendly.
“When action grows unprofitable, gather information; when information grows unprofitable, sleep.”
― Ursula K. LeGuin, The Left Hand of Darkness
I saw a person using the React Router inside Next.js and I have so many questions. Like the navigation is visibly very fast, but my questions are:
Upon looking I found a detailed blog post on building a SPA using Next.js and React Router. It mentions the reason for not using the Next.js router:
Next.js is not as flexible as React Router! React Router lets you nest routers hierarchically in a flexible way. It's easy for any "parent" router to share data with all of its "child" routes. This is true for both top-level routes (e.g.
/aboutand/team) and nested routes (e.g./settings/teamand/settings/user).
I do understand why someone would want to use Next.js but I have yet to learn more about this React Router thing.
BRB.
Update:
Josh has written a new short blog post about how he did it, definitely worth reading and understanding the process.
Just noting this for myself for future reference that whenever I have to create cards, I must use this simpler method each time. If the HTML is like this:
<div class="card-container">
<div class="card">
<p>Card 1 content</p>
</div>
<div class="card">
<p>Card 2 content</p>
</div>
</div>
The CSS should be like this:
.card-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
margin: 0 auto;
}
/* and then whatever CSS for .card here */
It's clean and quick.
I’ve compiled a list of websites for important web technologies that are likely to have old but functional designs. These are fundamental tools for the internet, often open-source, and their websites prioritize functionality over aesthetics, reflecting their long-standing nature.
A multimedia framework for transcoding, streaming, and playing various media formats.
A self-contained, serverless, SQL database engine widely used in applications.
An open-source HTTP server that powers a significant portion of the web.
A high-performance HTTP server and reverse proxy used for web serving and load balancing.
A powerful, open-source object-relational database system used for data storage and management.
An open-source relational database management system widely used in web applications.
An interpreted, high-level, general-purpose programming language used extensively in web development.
A dynamic, open-source programming language known for its simplicity and productivity.
A distributed version control system essential for managing source code in software development.
The core of the Linux operating system, providing essential services for computing systems.
A collection of free software, including the GNU operating system, which is Unix-like but free.
A typesetting system that is the standard for creating books and articles with complex mathematics.
A highly configurable text editor built for efficient text editing, especially for developers.
An extensible, customizable text editor that also serves as a development environment.
A high-level, general-purpose, interpreted programming language used for text processing.
A scripting language with a simple API for embedding into C/C++ applications.
A suite of secure networking utilities based on the SSH protocol for secure remote access.
A software library for applications that secure communications over computer networks.
The most widely used Domain Name System (DNS) software on the internet.
I will keep updating this list as I discover more such websites.
I came across a GitHub repo containing the complete Python code host and run a WhatsApp AI chatbot. I have forked the repo as I am thinking of making such a chatbot for myself. The requirements are mentioned as:
- WaSenderAPI: Only $6/month for WhatsApp integration
- Gemini AI: Free tier with 1500 requests/month
- Hosting: Run locally or on low-cost cloud options
- No WhatsApp Business API fees: Uses WaSenderAPI as an affordable alternative
I will learn more about the WhatsApp business API and how it can be used to create a WhatsApp chatbot for specific topics that people can interact with. And then how it can all be monetized.
Stripe has developed a new approach to analyze transactions using a new transformer-based foundation model. Earlier, they relied on a traditional machine learning model but these models had limitations, but the new model is supposed to even increase the conversion even more and significantly decrease the fraudulent transactions.
Gautam Kedia, an AI/ML engineer at Stripe, explained this in a detailed X post. He mentions:
So we built a payments foundation model—a self-supervised network that learns dense, general-purpose vectors for every transaction, much like a language model embeds words. Trained on tens of billions of transactions, it distills each charge’s key signals into a single, versatile embedding.
This approach improved our detection rate for card-testing attacks on large users from 59% to 97% overnight.
While I did have a loose knowledge of what a transformer is, I looked up its definition again to understand it better in the context of payments:
A Transformer is a type of neural network architecture that has revolutionized natural language processing (NLP) and is now being applied to other domains, as seen in the Stripe example. Its key innovation is the attention mechanism.
The attention mechanism allows the model to weigh the importance of different parts of the input sequence when processing any single part.
Further, I asked Gemini to explain this entire thing to me in a simpler words and here's how it explained:
Think of it like reading a book. An older model might read word by word and only remember the last few words. A Transformer, with its attention mechanism, can look back at earlier parts of the book to understand the meaning of the current sentence in the broader context. In the payment world, this means understanding the significance of a transaction not just in isolation, but in the context of previous transactions.
Very cool.
Someone added more than 81 MCP tools to their Cursor IDE and it started showing a warning saying "too many tools can degrade performance" and it suggested to use less than 40 tools.
Cursor CEO replied the following:
you'll be able to disable individual tools in 0.50 :)
But the problem still remains, if MCPs are the future, there has to be a way that they are automatically managed and I do not need manually enable or disable tools.
I came across this post on HackerNews that discussed that Firefox has moved its repo to GitHub for the first time and it's a huge deal, as a person mentioned on X.
I don't know how this changes things for Firefox, but there must be some reason to it. A person, who works at Mozilla, commented:
The Firefox code has indeed recently moved from having its canonical home on mercurial at hg.mozilla.org to GitHub. This only affects the code; bugzilla is still being used for issue tracking, phabricator for code review and landing, and our taskcluster system for CI.
On the backend, once the migration is complete, Mozilla will spend less time hosting its own VCS infrastructure, which turns out to be a significant challenge at the scale, performance and availability needed for such a large project.
But this comment made the most sense for me:
I think it's actually an understandable strategical move from Mozilla. They might loose some income from Google and probably have to cut the staff. But to keep the development of Firefox running they want to involve more people from the community and GitHub is the tool that brings most visibility on the market right now and is known by many developers. So the hurdle getting involved is much lower.
I think you can dislike the general move to a service like GitHub instead of GitLab (or something else). But I think we all benefit from the fact that Firefox's development continues and that we have a competing engine on the market.
Some folks seemed excited about the migration whereas some are upset about the move to the closed-source platform, GitHub. But if this really makes the browser better, I am excited for the move.