DAILY NEWS

Stay Ahead, Stay Informed – Every Day

Advertisement
I scraped Chrome Web Store reviews to find abandoned extensions that still have 100k+ users



I’ve shipped 4 Chrome extensions and 2 VS Code extensions. The advice that always sounds smart — “find a popular extension the dev abandoned, rebuild it better” — is miserable in practice. You open the Web Store, see 100k users and a 4.4 rating, think you found gold, then burn a weekend reading reviews only to realize half the complaints are unfixable traps (sync died, login broke, backend gone).

So I built a small pipeline to do the boring part automatically.

The method

Scrape public Chrome Web Store metadata — users, rating, last-updated date.
Filter: 20k–300k users, 18+ months without an update, rating 3.3–4.4 (good enough to prove demand, bad enough to prove pain).
Pull up to 50 recent reviews per candidate via public CWS data.
Score each one:
score = log10(users)10 + months_stale0.5 + feature_request_count2 – trap_count1.5
The key part is trap_count — I subtract points for complaints about sync/login/server issues, because those are unfixable without inheriting someone else’s dead backend. High “demand” with high trap count is a mirage.

One example

Extension Manager — 100k users, 4.4★, last updated ~25 months ago. Looks healthy until you read the 1–2★ reviews:

“The site-specific rules feature simply does not work… the core feature advertised is broken.”
“It won’t save any changes made… extensions are re-enabled automatically.”
A user even posted an RCE report: the dev parses JSON with a Function(str)() fallback — executing arbitrary code from untrusted input.

That’s not “build a clone.” That’s “fix the rules engine, kill the eval, add local backup, ship something 100k people already want.”

The counterintuitive part

The highest-scoring extension in my list (200k users, abandoned ~4 years) is actually the worst business opportunity — it’s a simple toggle utility whose users will never pay, and the original asks for camera/mic permissions (adware-grade). Raw download counts would put it at the top of your build list. Revenue potential buries it.

That gap between “looks like an opportunity” and “is actually monetizable” is the whole reason I started scoring monetization separately.

What I did with it

I analyzed 30 of these — 14 deep-dives and 16 honest “avoid this” verdicts — with demand, the gap, build difficulty, monetization reality, and why nobody rebuilt it yet. Packaged it with the raw CSV here if it’s useful to anyone: https://tuanspark85.gumroad.com/l/wnnxyq (there’s a free Top-3 preview too).

Happy to answer questions about the scraping pipeline in the comments — what tripped me up was the CWS review endpoint and pagination.



Source link

How to Debug AI-Generated Code as a Beginner



You generated a feature in thirty seconds using Claude. It compiled. You deployed it. Then something broke in production.

Now you’re staring at an error traceback, and you realize something terrifying: you have no idea what the code actually does.

This is called “vibe coding,” and it’s the defining trap of learning to code in the age of AI. You can generate working code instantly. But when it breaks, you’re completely lost. You can’t debug what you don’t understand.

The instinct is to paste the error into Claude or ChatGPT and run whatever it suggests. That’s the wrong move. It leads to a cycle of patches stacking on patches until your codebase becomes unmaintainable. You need a different approach.

Why Debugging AI Code Is Different

Traditional debugging assumes you wrote the code. You remember what you were trying to do. You understand the control flow. You can trace execution paths in your head.

With AI-generated code, none of that is true. You’re reading code as if someone else wrote it. You lack the mental model of why it exists. You don’t understand the architectural choices.

This creates what researchers call “debugging by guessing.” Your code fails. You see an error message. You immediately paste the error into an LLM and run the suggested patch. Sometimes it works. Often it introduces new failures elsewhere.

The problem is that LLMs optimize for local fixes, not global understanding. They patch the symptom without addressing the cause. Over several iterations, your code accumulates redundant checks, swallowed exceptions, and tangled logic that only gets worse.

The cost shows up later. When a system needs modification. When a subtle bug appears. When you need to add a new feature that interacts with existing code. At that point, you hit a wall. The final 10% of the work—the parts that require understanding—becomes impossible.

The Wrong Way: Debugging by Copy-Paste

The moment your AI-generated code fails, the temptation is immediate. Copy the error. Paste it into Claude. Run the fix.

Resist this.

This workflow trains your brain to avoid productive struggle—the cognitive friction of sitting with a problem and working through it. When you skip it, you short-circuit learning.

Research from an Anthropic study shows developers using AI to generate code score 17% lower on comprehension tests than those who write code manually. They feel productive. They’re shipping features. But they’re building a codebase they can’t maintain.

The Right Way: Use AI as a Dialogue Partner

Flip the dynamic. Stop asking AI to fix your code. Start asking it to help you understand why the code is failing.

This is called Socratic debugging. Instead of pasting errors and accepting solutions, you use AI as a thinking partner that challenges you to diagnose the problem yourself.

Here’s how it works in practice. Your code fails. Instead of pasting the error, you write a precise prompt: “I’m getting this error. Don’t write any code. Instead, ask me clarifying questions to help me locate the bug myself.”

The AI now becomes a tutor. It asks you questions about what the code is supposed to do. It walks you through your mental model. It helps you narrow down where the failure might be. You’re doing the thinking. The AI is scaffolding your reasoning.

Another powerful approach: ask the AI to describe what the code does before you try to debug it. “Read this generated block of code and describe its execution path in plain English. Do not write any code.” This forces the AI to articulate the logic, which often exposes what’s actually happening versus what you thought was happening.

Or ask it to identify edge cases: “Identify potential edge cases and failure modes that could break this function. Do not write code.” This trains your brain to think defensively about code instead of assuming it works.

The key is constraining the AI from writing code. When you do, it becomes a thinking tool instead of a code generator.

Set Clear Boundaries in Your Codebase

Before you ask AI to generate anything, establish structure.

Break complex features into small, isolated modules with explicit files and hard folder boundaries. Once these boundaries exist, freeze your interfaces by writing contract tests that pin inputs and outputs. Then instruct the AI: “Work only in this file. Do not modify other files. Do not create new helper functions.”

This prevents the AI from generating duplicate code across multiple files. It prevents breaking changes in one area from silently failing elsewhere. It gives you architectural control.

This practice is called componentized thinking, and it’s essential for keeping AI-generated code maintainable.

Manage Your Chat Context Carefully

As a conversation with an LLM grows, the model’s token context window gets saturated. The model compresses earlier messages. It forgets folder structures. It renames variables. It hallucinates functions that were never written.

At this point, continuing the same conversation becomes counterproductive. Start a fresh chat instead.

Before you do, have the AI document the current progress in a markdown file. Write down what works, what’s unresolved, what you’ve tried. Then paste that summary into a new, clean session.

Better yet, maintain systematic documentation in your repository itself. Create a file called vision.md that describes the core features and user flow. Create a ConnectionGuide.txt that logs every port, database URI, and API endpoint. When you start a new chat, point the AI to these files instead of re-explaining everything.

Couple AI Guidance with Real Debugging Tools

Here’s the hard truth: AI can guide your thinking, but it can’t see your running code.

LLMs analyze static code. They can’t observe the live state of a program. When debugging runtime failures, they’re working from incomplete information. You need real tools to see what’s happening.

If you’re using Python, tools like Python Tutor or Thonny let you step through code line by line, watching variables update and the call stack unfold. Seeing the execution path visually is far more revealing than reading code.

For system-level issues, run diagnostics directly. If a file sync is stalled, use lsof to check file descriptor locks. Use ps to check active processes. Use netstat to see network connections. Have the AI suggest a diagnostic plan, then execute the commands yourself and verify the results.

This combination—AI for strategic guidance, real tools for tactical evidence—is far more powerful than either alone.

The Accountability Principle

Research on student learning reveals something striking. When students know they have to explain their code to another person, they study differently.

A study of university CS courses found that students with unrestricted AI access performed better when required to defend their code in oral interviews. Why? Because the upcoming defense forced them to actually understand what they generated. They studied their code. They tested it. They prepared explanations.

This accountability mechanism is powerful. You don’t need an actual person. You can create this for yourself. Before committing code, write a brief explanation: What does this do? Why does it solve the problem? What could break? If you can’t answer these clearly, you haven’t understood it well enough.

This discipline forces you to engage with your code rather than skating past it.

The Honest Path Forward

AI is genuinely useful for debugging. It can suggest diagnostic approaches. It can explain why something might fail. It can generate test cases to verify fixes.

But the developers who thrive are those who treat it as a thinking partner. They establish boundaries in their codebase. They manage their context windows. They use real debugging tools alongside AI guidance. They hold themselves accountable for understanding their code.

Platforms like Mimo structure learning around this exact principle. Rather than letting you generate entire applications, the curriculum emphasizes interactive debugging and understanding. You write code manually. You debug it manually. Then you learn where AI fits into that foundation.

This approach takes more time than copy-pasting fixes. It’s also the only approach that actually builds competence. Your goal isn’t to ship code as fast as possible, but to become a developer who understands systems, debugs problems systematically, and maintains code that lasts.



Source link

Building TESSERACT-X: An AI-Powered 4D Simulation Engine in the Browser



Building TESSERACT-X: An AI-Powered 4D Simulation Experiment 🌌

Why I Built It

I started TESSERACT-X as a creative experiment with one question:

“What happens if we combine higher-dimensional mathematics, computer graphics, artificial intelligence, and simulation systems inside a browser?”

Most of my previous projects focused on normal application logic, but I wanted to explore something different:

How rendering engines work
How simulations update in real time
How mathematical spaces can be visualized
How AI can interact with a dynamic environment

The goal was not to create a real universe simulator, but to build an experimental sandbox where different computational ideas could interact.

TESSERACT-X became my playground for learning graphics programming, simulation architecture, and AI-assisted systems.

Understanding 4D Visualization

Humans naturally see the world in three spatial dimensions:

X → WidthY → HeightZ → Depth

A 4D system adds another mathematical axis:

W → Extra spatial dimension

Since we cannot directly see 4D objects, TESSERACT-X calculates objects in 4D space and projects them into 3D for visualization.

The engine works like this:

4D Coordinates↓4D Rotation Engine↓Projection Algorithm↓3D Representation↓WebGL Renderer

This allows objects like tesseracts (4D hypercubes) to be explored interactively.

Three.js Rendering Architecture

The visual engine was created using:

React
Three.js
React Three Fiber
WebGL

The rendering system is separated from the simulation system.

Rendering focuses only on:

Drawing objects
Updating positions
Handling cameras
Maintaining smooth FPS

The architecture:

React UI Layer↓Simulation State↓React Three Fiber Scene↓Three.js Objects↓WebGL GPU Rendering

For performance, the engine uses optimized rendering techniques instead of creating thousands of individual objects.

Physics Simulation Design

The physics system controls how objects behave inside the simulation.

It experiments with:

Force interactions
Energy changes
Spring-like connections
Motion over time
Stability calculations

Instead of directly animating objects, the engine continuously updates their state.

Example:

Current State↓Calculate Forces↓Update Velocity↓Update Position↓Render New Frame

The idea was to create a system where simple rules could produce interesting behaviors.

AI Scientist Concept

One experimental feature is the AI Scientist layer.

Instead of AI generating only text, the idea was:

“What if AI could observe a simulation?”

The AI layer analyzes:

Simulation changes
Stability
Patterns
System behavior

It can generate observations, explanations, and suggestions based on what happens inside the environment.

The concept explores AI as an observer rather than only a chatbot.

Problems I Faced

Building TESSERACT-X created many interesting challenges:

Performance Issues

Real-time simulations can become expensive because thousands of calculations happen every second.

Solution:

Optimized rendering
Reduced unnecessary updates
Used background workers

Understanding 4D Mathematics

4D rotations work differently from normal 3D rotations.

Instead of rotating around an axis, 4D rotations happen across planes.

This required learning new mathematical concepts.

Keeping UI Responsive

Heavy simulation calculations can freeze the browser.

Solution:

Separated:

Simulation EnginefromRendering Engine

so the experience stays smoother.

Performance Optimization

Performance became one of the biggest learning areas.

Optimizations added:

Web Workers for background calculations
GPU accelerated rendering
Instanced rendering
Better memory management
Separate update loops

Architecture:

Physics Thread↓Simulation State↓Render Thread↓GPU Output

The goal was keeping the browser responsive while running complex visual simulations.

Future Ideas

Possible future improvements:

N-Dimensional Simulation

Expanding beyond 4D:

5D visualization experiments
Custom dimension systems

Better AI Agents

Allow AI to:

Run experiments
Compare simulations
Generate reports

Advanced Physics Designer

Allow users to create custom simulation rules.

Digital Evolution Sandbox

Improve artificial organisms with:

Genetic systems
Adaptation
Environment changes

WebGPU Upgrade

Move from WebGL experiments toward newer GPU computing possibilities.

Final Thoughts

TESSERACT-X started as a fun experiment, but became a great learning experience combining:

• Computer Graphics• Mathematics• Artificial Intelligence• Simulation Engineering• Performance Optimization

Sometimes the best projects start with a simple question:

“What if I try building something unusual?”



Source link