MoreRSS

site iconThe Practical DeveloperModify

A constructive and inclusive social network for software developers.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of The Practical Developer

Your AI agent re-sends 80% of your budget every loop

2026-03-28 01:35:50

Your ReAct agent runs 15 turns. By turn 10, input_tokens is 87K. You're re-sending the entire conversation history every single iteration.

That's not generation cost. That's re-reading cost. And no observability tool shows you the trajectory.

We built a metric for it. Then we built a guard that stops the bleed before it kills your budget. Here's the problem, the math, and the fix.

The invisible cost of agent loops

Here's how a typical ReAct agent works:

Turn  1: system prompt + user query                       →    1,200 input tokens
Turn  2: + assistant response + tool result                →    3,800 input tokens
Turn  5: + three more rounds of think/act/observe          →   15,000 input tokens
Turn 10: the entire conversation so far                    →   87,000 input tokens
Turn 15: approaching the context limit                     →  152,000 input tokens

Every turn re-sends everything. The system prompt. The user's question. Every assistant response. Every tool result. The LLM has no memory between calls — you're paying to "remind" it what happened.

On GPT-4o ($2.50/M input tokens):

Turn Input tokens Cumulative input cost New generation cost
1 1,200 $0.003 $0.002
5 15,000 $0.07 $0.002
10 87,000 $0.29 $0.003
15 152,000 $0.67 $0.003

The generation column barely moves. You're paying $0.67 to re-read context, and $0.03 for the model to actually think. That's 96% overhead.

Switch to Claude Opus ($15/M input) and those numbers are 6x worse. A 15-turn agent run costs $4 in re-reads alone.

Why your dashboard doesn't show this

Open your observability tool. You'll see total tokens per request, cost per request, latency per request. All per-request. All in isolation.

None of these tell you:

  • What percentage of the context window is used at each turn
  • How fast utilization is growing
  • When you'll hit the model's limit
  • That 80% of your input tokens are the same conversation sent again

Your dashboard shows snapshots. It doesn't show the trajectory — the runaway growth curve eating your budget across a multi-turn session.

This is the metric that was missing.

Context utilization: one ratio that changes everything

utilization = input_tokens / max_context_tokens

Input tokens divided by the model's maximum context window. A number between 0 and 1.

Turn  1: utilization = 0.01   — plenty of room
Turn  5: utilization = 0.12   — still fine
Turn 10: utilization = 0.68   — growing fast
Turn 13: utilization = 0.85   — danger zone
Turn 15: utilization = 0.95   — one tool result away from hitting the wall

Plot this on a chart and you see the growth curve before it becomes a cost problem. At a glance you know: how close you are to the limit, how fast you're approaching it, and which agent is at risk.

How we record it

In toad-eye, context utilization is calculated automatically after every LLM call. If the model is in the pricing table, the metric is emitted — you don't do anything:

const pricing = getModelPricing(model);
if (pricing?.maxContextTokens && output.inputTokens > 0) {
  const utilization = output.inputTokens / pricing.maxContextTokens;

  // On the span — queryable in Jaeger
  span.setAttribute("gen_ai.toad_eye.context_utilization", utilization);

  // As a histogram — P95/P99 in Grafana
  recordContextUtilization(utilization, provider, model);
}

The pricing table knows every major model's context window:

"gpt-4o":           { maxContextTokens: 128_000 }
"gpt-4.1":          { maxContextTokens: 1_047_576 }
"claude-opus-4":    { maxContextTokens: 200_000 }
"claude-sonnet-4":  { maxContextTokens: 200_000 }
"gemini-2.5-pro":   { maxContextTokens: 1_048_576 }

Custom model? Override it:

setCustomPricing({
  "my-finetuned-gpt4": {
    inputPer1M: 3.0,
    outputPer1M: 12.0,
    maxContextTokens: 32_768,
  },
});

Context guard: warn before it's too late

A metric tells you what happened. A guard stops it from happening.

initObservability({
  serviceName: "my-agent",
  contextGuard: {
    warnAt: 0.8,    // console.warn at 80%
    blockAt: 0.95,  // throw before the LLM call at 95%
  },
});

At 80%, you get a warning:

toad-eye: context window 82% full for gpt-4o (104,960 / 128,000 tokens)

At 95%, toad-eye throws a ToadContextExceededError — before the call, not after. Your agent catches it and can act:

try {
  const response = await traceLLMCall(input, () => llm.chat(messages));
} catch (err) {
  if (err instanceof ToadContextExceededError) {
    // err.utilization: 0.96
    // err.inputTokens: 122,880
    // err.maxContextTokens: 128,000
    messages = await compressHistory(messages);
    // retry with compressed context
  }
}

The error carries everything you need: current utilization, the threshold, the model, token counts. No guessing.

When the block fires, toad-eye records it in three places: a span event in Jaeger, a counter metric in Grafana, and a warning in your application logs. One event, full visibility.

What to do when utilization is high

The metric and guard tell you there's a problem. Three practical fixes:

Summarize old turns. After N turns, replace the conversation history with an LLM-generated summary. Trade 50K tokens of history for a 2K summary. The agent loses some detail but stays under budget.

Compress tool results. Tool results are the biggest token hogs — a web search returning 10K tokens of HTML. Summarize tool results before adding them to context. Or store full results externally and put just a reference in context.

Route to a bigger model. When utilization crosses a threshold, switch models. Running on gpt-4o (128K)? Route to gpt-4.1 (1M) for the final turns:

if (err instanceof ToadContextExceededError && err.model === "gpt-4o") {
  return callWithModel("gpt-4.1", messages);
}

And sometimes the right answer is to stop. If your agent hasn't converged in 10 turns, adding 5 more turns of context won't help — it'll just cost more.

Where this came from

After publishing article #3 on OTel semantic conventions, a reader named @jidong left a comment:

"Context window usage per turn matters more than total tokens in agent loops."

They were right. Total tokens is a number. Context utilization is a trajectory. The first tells you what happened. The second tells you what's about to happen.

We built context_utilization the next week. Here's the tracking issue — shaped directly by that comment.

Quick checklist

If you're running agents in production:

  • Monitor input_tokens per turn, not just per session
  • Calculate context utilization: input_tokens / max_context_tokens
  • Alert when P95 utilization crosses 0.7
  • Guard at 80% (warn) and 95% (block)
  • Have a compression strategy ready before you hit the limit
  • Test with 10+ turn runs — the problem only shows up at scale

The metric is simple. The insight it gives you is not.

Previous articles:

toad-eye — open-source LLM observability, OTel-native: GitHub · npm

🐸👁️

History of Java,Architecture of Java and Java Server Provider Companies

2026-03-28 01:34:42

1.The History of Java:

🌱 Beginning

Java was created in 1991 by James Gosling at Sun Microsystems.

Originally, it was called Oak and was designed for small devices.

🔄 Name Change

In 1995, Oak was renamed to Java.
At the same time, the internet was growing, and Java became perfect for web development.

🌐 Why Java Became Popular?

Java introduced the idea:

👉 “Write Once, Run Anywhere”

This means Java code can run on any system using JVM (Java Virtual Machine).

🏢 Big Change

In 2010, Oracle Corporation bought Sun Microsystems and took control of Java.

🚀Today, Java is used in:

  • Web development
  • Android apps
  • Enterprise applications

2.Architecture of Java:
_
🧱 What is Java Architecture?_

Java architecture is the process that explains how a Java program is compiled and executed. It is designed to follow the concept:

👉 “Write Once, Run Anywhere”

This means Java code can run on any system without changing the program.

🔄 How Java Works?

The working process of Java is simple:

  • You write code in a .java file
  • The compiler (javac) converts it into bytecode (.class)
  • The JVM (Java Virtual Machine) runs the bytecode
  • Output is generated

⚙️ Main Components of Java Architecture

🔹 JDK (Java Development Kit)

JDK is used by developers to write and compile Java programs. It includes tools like the compiler.

🔹 JRE (Java Runtime Environment)

JRE provides the environment to run Java programs. It includes JVM and necessary libraries.

🔹 JVM (Java Virtual Machine)

JVM is the heart of Java. It converts bytecode into machine code and executes it.

🧩 Inside JVM

JVM has important parts:

  • Class Loader – Loads the class files
  • Memory Area – Stores data (Heap, Stack)
  • Execution Engine – Runs the program
  • Garbage Collector – Removes unused memory

✨ Why Java Architecture is Important?

  • Platform independent
  • Secure and reliable
  • Automatic memory management
  • Better performance using JIT

3.Java Server Provider Companies:

🌍 Cloud & Hosting Providers

🔹 Hostinger

 Hostinger is a popular hosting provider. It offers VPS hosting that supports Java applications like JSP and Servlets. It is beginner-friendly and affordable.

🔹 Jelastic

Jelastic is a cloud platform specially designed for Java developers. It supports modern technologies like Docker and Kubernetes.

🔹 RackBank

RackBank is an Indian hosting provider. It offers reliable Java hosting with good support and performance.

🔹 Javapipe

Javapipe provides dedicated Java hosting. It supports frameworks like Spring and Hibernate.

🖥️ Java Application Servers

🔹 Apache Tomcat

Apache Tomcat is the most widely used Java server. It is mainly used to run web applications.

🔹 JBoss (WildFly)

JBoss is an enterprise-level server used for large-scale applications.

🔹 GlassFish

GlassFish is a Java EE server used for developing and testing applications.

🧠 Why Do You Need a Java Server?

  • To run Java web applications
  • To host websites and APIs
  • To manage backend services

Firecrawl vs Olostep: A Detailed Comparison for Scalable, LLM-Ready Web Scraping

2026-03-28 01:34:32

Web scraping has evolved from brittle selector-based bots to intelligent data pipelines geared for AI and analytics. In this new landscape, modern scrapers must not only extract data but also deliver results that are scalable, reliable, concurrent, and ready for Large Language Models (LLMs).

Two prominent contenders in this space are Firecrawl and Olostep, each with a unique paradigm and strengths. Below, we examine how they compare across fundamental dimensions.

1. Overview: What Are They?

Olostep

Olostep is a web data API designed for AI and research workflows, offering endpoints for scraping, crawling, mapping, batch jobs, and even agent-style automation. It emphasizes simplicity, reliability, and cost-effective scalability for high-volume data extraction.

Firecrawl

Firecrawl is an API-first, AI-powered web scraping and crawling platform built to deliver clean, structured, and LLM-ready outputs (Markdown, JSON, etc.) with minimal configuration. It emphasizes intelligent extraction over manual selectors and integrates natively with modern AI pipelines like LangChain and LlamaIndex.

2. Concurrency, Parallelism & True Batch Processing

This is where Olostep fundamentally separates itself from the rest of the market.

Olostep

Olostep offers true batch processing through its /batches endpoint, allowing customers to submit up to 10,000 URLs in a single request and receive results within 5–8 minutes.

This is not an “internally optimized loop over /scrapes”. It is a first-class batch primitive, designed specifically for high-volume production workloads.

In addition:

  • 500 concurrent requests on all paid plans
  • Up to 5,000 concurrent requests on the $399/month plan
  • Concurrency can be increased significantly for enterprise customers

This architecture is the reason Olostep customers can confidently operate at millions to hundreds of millions of requests per month.

Pros:

  • True batch jobs at massive scale (not pseudo-batching)
  • Extremely high concurrency limits by default
  • Designed for production pipelines, not scripts

Cons:

  • Slight learning curve for batch-based workflows

Firecrawl

Firecrawl supports asynchronous scraping and small batches, but “batch” typically means tens to at most ~100 URLs, handled internally through optimized queues.

Concurrency is intentionally limited to protect infrastructure and maintain simplicity, which works well for:

  • Developers
  • Prototypes
  • Early-stage products

However, these limits become noticeable when workloads exceed hundreds of thousands of pages per month.

Pros:

  • Easy parallelism for small-to-medium workloads
  • Simple async workflows

Cons:

  • No true large-scale batch abstraction
  • Concurrency limits make large-scale production harder

3. Reliability & Anti-Blocking

Reliability is often underestimated in web scraping until systems move from experiments to production. At scale, even small differences in success rate, retry behavior, or pricing for failed requests compound into major operational and cost issues.

Olostep

Olostep is designed with production reliability as a first-class constraint. Its infrastructure includes built-in proxy rotation, CAPTCHA handling, automated retries, and full JavaScript rendering without exposing these complexities to the user.

Most importantly, Olostep delivers a ~99% success rate in real-world scraping workloads. Failed requests are handled internally and do not result in unpredictable cost spikes.

A key differentiator is pricing predictability:

  • 1 credit = 1 page, regardless of whether the site is static or JavaScript-heavy
  • No premium charges for JS rendering
  • Reliable outcomes without developers needing to tune retries or fallback logic

Why this matters: At millions of requests per month, predictable success rates and costs are essential for maintaining healthy unit economics.

Pros:

  • Very high success rate (~99%)
  • Strong anti-blocking and retry mechanisms are used by default
  • Predictable pricing even for complex, JS-heavy sites

Cons:

  • Less visibility into internal retry logic (abstracted by design)

Firecrawl

Firecrawl also offers solid reliability for small to mid-scale workloads, with proxy rotation, stealth techniques, and JavaScript rendering support. For many developers, this works well during early experimentation and prototyping phases.

However, Firecrawl reports a lower overall success rate (~96%) at scale, and reliability costs increase notably for JavaScript-rendered websites, which consume multiple credits per page.

This can lead to:

  • Higher effective cost per successful page
  • Less predictable billing for dynamic sites
  • Increased friction as workloads grow

Pros:

  • Good reliability for developer-scale and medium workloads
  • Effective handling of JS-heavy content

Cons:

  • Lower success rate at scale compared to Olostep
  • Higher and less predictable costs for JS-rendered pages

Reliability in Practice

At a small scale, the difference between 96% and 99% success may seem negligible. At 10 million requests per month, however, that gap translates to 300,000 additional failures along with retries, delays, and added costs.

This is why teams building production systems often prioritize reliability and predictability over convenience once they begin scaling — and why many migrate from developer-centric tools to infrastructure designed explicitly for large-scale web data extraction.

4. Scalability: MVP vs Production ready project

Olostep

Olostep is explicitly designed for production-scale workloads:

  • Comfortable at 200k–1M+ requests/month
  • Proven scaling to 100M+ requests/month
  • Infrastructure optimized for long-running, high-throughput pipelines

This is why many teams:

"start with Firecrawl, hit scale limits, and then migrate to Olostep"

Firecrawl

Firecrawl excels at getting started quickly:

  • Open-source templates
  • Excellent developer onboarding
  • Strong LLM-focused output quality

However, beyond a few million requests per month, teams often face:

  • Cost unpredictability
  • Concurrency ceilings
  • Infrastructure friction

5. LLM-Ready Outputs & AI Integration

Olostep

Olostep also provides LLM-ready structured outputs through multiple endpoints:

  • Markdown, HTML, or structured JSON from scrapes
  • LLM extraction via prompts or parsers
  • Agents that can search and summarize the web with sources blending scraping with AI planning

Best for: Mixed workflows where scraping, search extraction, and agent automation intersect.

Firecrawl

Firecrawl excels in LLM-ready outputs:

  • Outputs in standardized markdown and JSON, optimized for RAG and LLM contexts
  • Schema generation and structured JSON extraction help minimize pre-processing for training data
  • Native integrations with popular AI ecosystems (LangChain, LlamaIndex, etc.) streamline workflows

Best for: AI assistants, semantic search, vector-store ingestion, and NLP pipelines.

6. Developer Experience & Use Cases

Dimension Olostep Firecrawl
Ease of use REST API, natural prompts Simple, coding-centric
SDK support Python, Node.js, REST Python, JS
AI integration Strong, especially for search Very strong
Batch scraping Excellent (100k+ URLs) Good
Custom extraction Prompt- and parser-driven Schema driven
Workflow automation Agents + AI workflows Primarily scraping

7. Endpoints Comparison

Olostep

Olostep exposes a broader, object-oriented set of endpoints, designed to support large-scale, multi-step, and recurring workflows.

Core endpoints include:

  • /scrapes: Extract content from individual pages
  • /crawls: Crawl entire domains with depth and scope control
  • /batches: Submit tens of thousands of URLs in a single job
  • /answers: Query the web and return synthesized answers
  • /maps: Discover site structure and internal links
  • /agents: Let AI agents browse, scrape, summarize, and reason

This design allows developers to explicitly compose workflows:

"Map → Crawl → Batch Scrape → Extract → Store → Schedule → Agent reasoning"

All steps are handled within a single API provider and billing model.

Best suited for: E-commerce and marketplace intelligence, SEO, AI visibility (GEO) pipelines, lead generation at scale, large-scale recurring data collection, and agentic systems that actively use the web.

Firecrawl

Firecrawl deliberately keeps its API surface small and opinionated, prioritizing LLM-ready outputs over explicit workflow orchestration.

Core capabilities include:

  • /scrape: Extract clean, structured content from individual URLs
  • /crawl: Crawl entire sites and return normalized documents
  • /extract (schema-based extraction): Convert raw content into structured JSON for LLM pipelines

This minimalism reflects Firecrawl's philosophy:

“Give me content that an LLM can immediately reason over.”

Instead of composing workflows across many endpoints, Firecrawl abstracts orchestration internally and returns ready-to-use Markdown or JSON.

Best suited for: RAG pipelines, vector database ingestion, knowledge base construction, semantic search systems, AI assistants and chatbots.

Endpoint & Capability Comparison

Capability Olostep Firecrawl
Single-page scraping /scrapes /scrape
Website crawling /crawls /crawl
True large-scale batch jobs /batches (10k+ URLs) Limited
Search-driven extraction /answers Supported
Site mapping /maps /map
Agent workflows /agents /agent
File-based workflows /files
Recurring / scheduled jobs /schedules
Structured extraction Prompt / parser-based Schema-based
LLM-optimized output Native Native

8. Which One Should You Choose?

There's no direct answer to this question, but you can pick the right platform based on your application.

Choose Firecrawl if:

  • You are a developer or a small team experimenting with ideas
  • You want a fast setup and minimal configuration
  • Your workload is under a few hundred thousand pages/month
  • Your primary goal is clean, LLM-ready documents

Choose Olostep if:

  • You are building a startup, scaleup, or enterprise product
  • You need true batch scraping at a massive scale
  • Predictable costs and unit economics matter
  • Your workload exceeds 200k–1M+ pages/month
  • You want infrastructure that won't bottleneck growth

9. Pricing & Cost Comparison (With Real Plan Numbers)

Pricing is where the architectural differences between Olostep and Firecrawl become concrete. While both offer a $99 and $399 tier, what you get at those price points is fundamentally different.

Olostep Pricing (Page-Based, JS Included)

Olostep pricing is linear and page-based. A “successful request” always counts as one page, regardless of complexity.

Plan Price Included Requests Concurrency Effective Cost
Free $0 500 pages Low
Starter $9 5,000 pages / month 150 $1.80 / 1k pages
Standard $99 200,000 pages / month 500 $0.495 / 1k pages
Scale $399 1,000,000 pages / month 5,000 $0.399 / 1k pages

What's included at every tier:

  • Full JavaScript rendering
  • Residential IPs
  • Anti-bot & CAPTCHA handling
  • Retries at no extra cost
  • Same price for static and JS-heavy sites

👉 1 request = 1 page. Always.

Firecrawl Pricing (Credit-Based, Complexity-Dependent)

Firecrawl pricing is credit-based, where page complexity directly affects cost.

Plan Price Credits / Month Concurrency
Free $0 (one-time) 500 credits 2
Hobby $19 3,000 credits 5
Standard $99 100,000 credits 50
Growth $399 500,000 credits 100

Important detail:

  • Static pages ≈ 1 credit
  • JS-rendered pages ≈ 2–5 credits
  • Retries and extraction complexity increase credit usage

This means “Scrape 100,000 pages” only holds for simple static sites.

$99 Plan: Real-World Comparison

Feature Olostep Standard Firecrawl Standard
Monthly price $99 $99
Pages included (static) 200,000 ~100,000
Pages included (JS-heavy) 200,000 20k–50k
Concurrency 500 50
Cost predictability Very high Medium
JS rendering cost Included Multiplies credits

$399 Plan: Scale Reality Check

Feature Olostep Scale Firecrawl Growth
Monthly price $399 $399
Pages included (static) 1,000,000 ~500,000
Pages included (JS-heavy) 1,000,000 100k–250k
Concurrency 5,000 100
Built for 10M+/month

Effective Cost per 1,000 JS-Heavy Pages

Platform Approx Cost
Olostep $0.40–$0.50
Firecrawl $2.00–$5.00+

At 1 million JS-heavy pages/month, this difference compounds quickly:

  • Olostep: ~$399
  • Firecrawl: ~$2,000–$5,000+

Pricing Philosophy Summary

  • Firecrawl optimizes for developer convenience and fast starts
    • Excellent for prototyping
    • costs rise with complexity
    • predictability decreases at scale.
  • Olostep optimizes for production economics
    • Flat cost per page
    • high concurrency by default
    • designed for millions → hundreds of millions of pages.

Pricing Verdict

If your workload is:

  • Under ~100k pages/month, mostly static → Firecrawl is fine
  • 200k–1M+ pages/month, JS-heavy, recurring → Olostep is materially cheaper
  • Multi-million pages/monthOlostep is the only sustainable option

At scale, pricing stops being a feature comparison and becomes a business constraint.

Conclusion

Both Olostep and Firecrawl represent the new generation of web scraping platforms, far removed from brittle, selector-based bots of the past.

Firecrawl shines as a developer-first tool: easy to adopt, tightly integrated with LLM workflows, and ideal for prototypes, internal tools, and early-stage AI projects. It dramatically lowers the barrier to turning raw web pages into clean, LLM-ready data.

Olostep, on the other hand, is built as production-grade web data infrastructure. With true large-scale batch processing, very high concurrency, predictable page-based pricing, and proven reliability at tens of millions of requests per month, it enables startups, scaleups, and enterprises to build sustainable products on top of web data without worrying about cost blowups or scaling ceilings.

In a world where web data increasingly powers analytics, AI systems, and autonomous agents, choosing a scraping platform is no longer just a technical decision. It is a strategic choice that directly impacts unit economics, system reliability, and how far a product can realistically scale beyond the prototype stage.

About The Author

Hamza Ali
@hmz_ali7

Co-Founder & CEO, Olostep · San Francisco, CA

Hamza is the co-founder and CEO of Olostep. He previously co-founded Zecento, one of the most popular AI e-commerce productivity products in Italy

View all posts

·Follow on X
·Follow on LinkedIn

Por Qué OpenAI Acaba de Matar Sora (Y Lo Que Significa Para Tu Startup)

2026-03-28 01:32:55

La semana pasada, OpenAI tomó una de las decisiones más difíciles de su historia: cerrar Sora, su generador de video que había causado sensación hace apenas dos años.

¿Por qué importa esto para ti como emprendedor? Porque contiene una lección que me tomó vender una startup para entender completamente.

El Contexto: $1.4M vs $1.9B

Déjame darte los números crudos:

Métrica
Valor

Revenue de Sora (desde su lanzamiento)
$1.4 millones

Revenue de ChatGPT (mismo período)
$1.9 mil millones

Downloads Sora Nov 2025
3.3 millones

Downloads Sora Feb 2026
1.1 millones

Caída
67%

Sora no fracasó por ser mal producto. Fracasó porque era un «side quest» — un proyecto secundario que consumía recursos sin generar tracción sostenida.

Lo Que Dijo Fidji Simo (Y Por Qué Me Pegó)

Fidji Simo es la nueva CEO de Aplicaciones en OpenAI. En un all-hands hace 10 días, dijo algo que me hizo parar:

«No pueden permitirse ser distraídos por 'side quests'.»

Esto viene de una empresa valuada en $840 mil millones de dólares. Si ellos no pueden darse el lujo de dispersarse, ¿por qué crees que tu startup sí puede?

Mientras OpenAI estaba jugando con video, robots, hardware y un browser llamado Atlas, Anthropic eligió un solo carril.

La Estrategia de Anthropic Que Está Ganando

Saanya Ojha, una analista que sigo, lo resumió perfecto:

«Mientras OpenAI eligió opcionalidad, Anthropic eligió foco. No intentó hacer todo. Ignoró video. Se saltó los trucos para consumidores. No persiguió redes sociales. En cambio, eligió un carril — desarrolladores y empresas — y cavó una trinchera.»

El resultado: Anthropic tiene un 70% de win rate en matchups head-to-head cuando empresas compran IA por primera vez.

Claude Code está capturando developers. Ingenieros están teniendo «Claude benders» — sesiones intensivas de coding con Claude que duran horas.

Mi Experiencia Con el Foco (O la Falta de Él)

En Pago Fácil nuestro foco era claro: pagos para ecommerce. Nunca intentamos crear nuestro propio ecommerce ni nuestro propio facturador — esas eran tentaciones obvias que supimos evitar.

Pero mi mayor pérdida de tiempo fue otra: intentar captar clientes corporativos mientras seguía creciendo con PyMEs.

Cada vez que lo hacía, dejaba de crecer en PyMEs. Literalmente. Los corporativos requerían reuniones interminables, customizaciones, ciclos de venta de meses. Y mientras tanto, las PyMEs — mi mercado real — seguían llegando pero yo no les estaba poniendo atención.

Es exactamente lo que le pasó a OpenAI: Anthropic eligió UN segmento (developers y enterprise) y cavó trinchera ahí. OpenAI quiso atender a todos — consumidores con Sora, developers con Codex, empresas con ChatGPT Enterprise — y terminó disperso.

La lección no es «no crezcas.» Es «elige tu trinchera antes de cavar otra.»

El Timeline del Colapso de Sora

Para que veas cómo se ve un side quest en cámara lenta:

  • Feb 2024: Sora se revela, causa sensación. El hype es real.
  • Sep 2025: Lanzan Sora 2 como app standalone.
  • Nov 2025: Peak de downloads (3.3 millones).
  • Dic 2025: Anuncian deal con Disney por $1 mil millones para 200+ personajes.
  • Feb 2026: Downloads caen 67%.
  • 24 Mar 2026: OpenAI anuncia el cierre. Disney confirma que no habrá inversión.

De hype a muerte en dos años. Y con $1 mil millones de Disney sobre la mesa que se evaporó.

Lo Que OpenAI Está Haciendo Ahora

El reset es brutal pero estratégico:

  • Superapp: Están consolidando ChatGPT + Codex + Atlas en una sola ventana.
  • Foco en coding y enterprise: Ahí está el dinero real. Codex ya superó $1B ARR.
  • Renombraron el equipo de producto a «AGI Deployment.» No es sutil.
  • Sam Altman está delegando safety y security para enfocarse en data centers y capital.

Y lanzaron Spud, que según comunicación interna de Altman es un «modelo muy fuerte» que podría «realmente acelerar la economía.»

La Pregunta Que Deberías Hacerte

Si OpenAI, con $840B de valuación, tuvo que matar un producto que generaba millones porque no era su core… ¿qué side quests estás manteniendo vivos tú?

No estoy diciendo que nunca experimentes. Pero hay una diferencia entre:

  • Experimentación estratégica: Probar algo pequeño, medir rápido, decidir en semanas.
  • Side quest: Seguir invirtiendo recursos en algo que «ya está ahí» aunque no mueva la aguja.

Thomas Husson de Forrester lo dijo claro: Sora fue «un agujero negro de recursos» con «monetización limitada.»

El Costo Real de la Dispersión

Henry Ajder, experto en IA, resumió por qué cerraron ahora:

«Dado que OpenAI sigue sin ser rentable y la presión de inversores y rivales crece, este es dinero que probablemente decidieron que no pueden seguir quemando mientras el interés inicial se desvanece.»

Lee eso de nuevo: OpenAI no es rentable. Con $1.9B de revenue de ChatGPT. Con $840B de valuación.

Si ellos tienen que tomar decisiones duras sobre dónde enfocar recursos, imagina lo crítico que es para una startup en etapa temprana.

Qué Hacer Con Esto

  • Haz el ejercicio hoy: Lista todos los proyectos/features en los que estás trabajando. ¿Cuáles son tu «ChatGPT» y cuáles son tu «Sora»?
  • Mata algo esta semana: No la próxima. Esta. El dolor de cerrar algo ahora es mucho menor que el costo de mantenerlo vivo 18 meses más.
  • Elige tu trinchera: ¿Cuál es el equivalente a «developers y empresas» para tu negocio? Cava ahí.

El foco no es sexy. Decir «no» a oportunidades brillantes duele. Pero como acaba de demostrar la empresa de IA más valiosa del mundo: no hay alternativa.

¿Tienes dudas sobre cómo priorizar en tu startup? Únete a mi comunidad de emprendedores en Cágala, Aprende, Repite — ahí podemos ayudarte entre todos.

Publicado originalmente en cristiantala.com

You’ve Been Installing Software the Hard Way

2026-03-28 01:30:55

Before I used Linux, I installed software the way most people do. You open a browser, search for the thing you want, find the official website, download an installer, click through a wizard, and eventually the software appears on your system. Sometimes it takes five minutes. Sometimes you download something from the wrong site and end up with a toolbar you didn’t ask for. Sometimes the installer asks you to restart your computer to install a text editor.

It works. But it doesn’t scale, and it doesn’t age well. After a while you have no idea what’s installed on your machine, where it came from, or how to update it cleanly. And updating is the part that really shows the cracks. You find out a new version is available because the software told you, you go back to the website, download the new installer, click through the wizard again, and hope it cleans up after itself properly.

Package managers solve this. And once you’ve used one properly, going back to the old way feels like a step backward.

What is a package manager, actually?

A package manager is a tool that handles installing, updating, and removing software on your system. Instead of you hunting down the right installer for the right version on the right website, you just tell the package manager what you want, and it handles the rest. It knows where to get the software, what version to grab, and what other software it needs to work.

That last part is important. Most software depends on other software. A video editor might need a specific audio library. A web framework might need a particular runtime version. A database client might need a specific version of a driver that itself needs a specific version of something else. When you install things manually, you’re responsible for tracking all of that yourself, and it’s exactly as painful as it sounds.

A package manager does it automatically. You ask for one thing, it figures out the entire chain of dependencies, and installs everything in the right order.

Think of it like ordering from a restaurant versus going to three different grocery stores to buy ingredients, then cooking everything from scratch, then figuring out mid-recipe that you’re missing something. Both approaches get you fed. One is a lot less effort.

Windows: the platform that came late to this

For most of its history, Windows didn’t have a built-in package manager. You installed software by downloading executables and running them. Each installer did whatever it wanted: some added themselves to the PATH, some didn’t, some left behind registry entries when you uninstalled, some didn’t. Some bundled additional software you didn’t want and hoped you’d miss the checkbox.

That changed with winget, which Microsoft released in 2020 and has been steadily improving since. It’s built into modern Windows and lets you install software straight from the terminal:

winget install Mozilla.Firefox
winget install Git.Git
winget install Microsoft.VSCode
winget install Spotify.Spotify

It’s not as mature as what Linux has had for decades, but it’s a real package manager with a real repository and it works well for common tools. You can even export your installed packages to a file and use it to restore your entire setup on a new machine, something that would have taken an afternoon doing manually before.

Before winget, the community filled the gap. Chocolatey has been around since 2011 and has a massive package repository. It’s still widely used, especially in corporate environments where IT teams need to automate software deployments across hundreds of machines. Scoop is another popular option, leaning more toward developer tools and command-line utilities, and it installs everything to your user directory without needing admin privileges, useful if you’re on a work machine where you don’t have full admin access.

If you’re a developer on Windows, any of these will improve your life compared to the download-and-run approach.

macOS: Homebrew became the de facto standard

macOS doesn’t ship with a package manager for general software either. Apple gives you the App Store for GUI apps and that’s about it. For developers who need command-line tools, libraries, and utilities, the App Store isn’t the answer.

The community built one that became so widely adopted it’s essentially assumed to be installed on any developer’s Mac.

Homebrew is that tool. You install it with a single command, and then the whole thing just works:

brew install git
brew install node
brew install ffmpeg
brew install wget
brew install imagemagick

Homebrew calls its packages “formulae” for command-line tools and “casks” for GUI applications. Want to install a desktop app without touching a browser?

brew install --cask firefox
brew install --cask visual-studio-code
brew install --cask vlc
brew install --cask discord

It handles updates cleanly too. brew update refreshes the package list, brew upgrade upgrades everything outdated. One command and your whole system is current. Compare that to opening five different applications, clicking “check for updates” in each one, and waiting for them to download and restart individually.

MacPorts is the older alternative that predates Homebrew and some people still prefer it, particularly for certain scientific or research tools. But Homebrew won the adoption battle years ago. If you’re on a Mac, Homebrew is almost certainly already there.

Linux: this is where it gets interesting

Linux distributions have had package managers since the 1990s. It’s baked into how the whole system works, not bolted on afterward. On Linux, the package manager isn’t a convenience, it’s the primary way you’re expected to interact with software. The entire operating system, including the kernel, the desktop environment, and every tool installed on it, is managed through it.

That means when you run a system update on Linux, you’re not just updating one application. You’re updating everything at once, in one command, in a consistent and predictable way.

The package manager you get depends on which distribution you’re using, because Linux distros are built around different packaging formats and different philosophies about how software should be distributed.

Debian and Ubuntu use apt (Advanced Package Tool). It manages .deb packages and is probably the most widely recognized Linux package manager:

sudo apt install git
sudo apt install vlc
sudo apt install htop
sudo apt update && sudo apt upgrade

The update command refreshes the list of available packages. The upgrade command actually installs newer versions. It’s a two-step process, which trips up newcomers who run apt update and wonder why nothing changed.

Fedora and Red Hat use dnf, which manages .rpm packages. The commands are similar enough that switching between them doesn’t take long to get used to:

sudo dnf install git
sudo dnf install vlc
sudo dnf upgrade

Arch Linux (and Arch-based distros like CachyOS, Manjaro, or EndeavourOS) use pacman. It’s fast, minimal, and does exactly what you ask with no ceremony:

sudo pacman -S git
sudo pacman -S vlc
sudo pacman -Syu

The -Syu flag is the one you’ll type constantly on Arch: it syncs the package database, updates all packages, and upgrades the system in one shot. Rolling release distributions like Arch stay current by design, so running this regularly is just part of the workflow. Think of it like a standing order. Rather than manually restocking your pantry item by item whenever something runs out, you’ve arranged for everything to be automatically topped up at once.

openSUSE uses zypper. Void Linux uses xbps. Alpine uses apk. Every major Linux distribution has its own tool, but the underlying concept is always the same: a central repository of packages, a tool to interact with it, and automatic dependency resolution.

The AUR: Arch’s unique addition

If you use Arch or an Arch-based distro, you’ll eventually hear about the AUR, the Arch User Repository. It’s worth understanding because it’s unlike anything the other ecosystems have.

The official Arch repositories contain software that the Arch team maintains and packages. The AUR is a community repository where anyone can submit a PKGBUILD, a script that describes how to download, build, and install a piece of software. It’s not precompiled packages you install directly. It’s instructions that your machine uses to build the software locally from source.

The result is that practically anything you could want is available on Arch. Obscure tools, proprietary software, niche utilities, things that haven’t made it into official repositories anywhere. If it exists, someone has probably written a PKGBUILD for it. Tools like yay or paru let you interact with both the official repos and the AUR with the same syntax, so in practice you barely notice the distinction.

The AUR is a bit like a community cookbook where anyone can contribute recipes. The official repos are the curated menu, tested, maintained, guaranteed to work. The AUR is the full cookbook, vastly more options, but you’re expected to use some judgment about what you try.

BSD: the same idea, different world

BSD systems, FreeBSD, NetBSD, OpenBSD, have their own package managers. FreeBSD uses pkg, which manages binary packages similar to how apt or pacman works:

pkg install git
pkg install vim
pkg upgrade

FreeBSD also has the Ports collection, which is conceptually similar to the AUR: a collection of build scripts for thousands of pieces of software that you compile from source on your own machine. It’s been around since the early 1990s and was actually an inspiration for how Arch’s own packaging system was later designed.

If you ever find yourself on a BSD system, the commands are a little different but the mental model is exactly the same. Same restaurant, slightly different menu, same way of ordering.

Language-level package managers

Here’s something worth pointing out: once you start writing code, you’ll use package managers that have nothing to do with your operating system.

npm manages JavaScript packages. pip manages Python packages. cargo manages Rust crates. composer manages PHP dependencies. gem manages Ruby libraries. These all work on the same principle as system package managers, a central registry, version resolution, automatic dependency management, but they operate at the language level rather than the system level.

The npm install you run inside a project is the same concept as apt install on your system. The pip install requests you run in a Python script is the same concept as brew install wget on your Mac. Same idea, different scope.

Once you see that pattern, it sticks. Every new package manager you encounter, no matter the language or platform, immediately makes sense. The commands are different, but you already understand what’s happening underneath.

And that’s really the point of understanding any of this. Not to memorize the flags, but to understand what the tool is actually doing. When you do, the rest follows naturally.

Contribute to open source projects without leaving a trace: a new way to collaborate on GitHub

2026-03-28 01:30:53

Hello everyone!

Due to conflicts of interest, I had to delete the previous posts, but these days, I will start publishing again some posts related to privacy and security, and how some of my tools can help in that aspect. Also, I would love to receive feedback from you on this software you made, and areas for improvement.

Also, I want to say that for the translation of my posts I use ChatGPT, I do not use it to create my posts, but to translate, the posts are written entirely by me.

Thank you very much in advance for taking the time to visit this post, if you want to see the gitGost website visit this link: https://gitgost.leapcell.app
If you want to see the code, visit this link: https://github.com/livrasand/gitGost

In the world of development, collaboration is key. But what happens when contributing to a project means revealing our identity, exposing us to immutable public history or possible privacy risks? This is where gitGost comes in, a tool that rethinks how we interact with repositories on GitHub, offering a layer of anonymity and privacy that we haven't seen before.

What is gitGost?

gitGost allows any developer to contribute to GitHub repositories without leaving personal footprints. With a privacy-first approach, it requires no accounts or tokens – just a simple command is enough to connect your local repository to gitGost and start pushing your changes. Behind the simplicity, there is a robust system built in Go, which guarantees security, anonymity and ease of use.

Privacy in the foreground

Contributions made through gitGost remove all personal metadata — names, emails, dates, and even IPs if combined with Tor. Pull Requests are automatically created from a generic anonymous identity (@gitgost-anonymous), and all communications are stored minimally, with no personal data, just a counter, the repository name and the URL of the PR.

In addition, gitGost offers the possibility of receiving anonymous notifications about the status of your PRs through the ntfy.sh service, without needing to register or provide an email. This way, you can stay up to date with comments, reviews, and merges without exposing your identity or compromising your privacy.

Simple and flexible collaboration

The workflow boils down to three clear steps: add gitGost as a remote, commit your changes, and push to the remote anonymously. For those who receive feedback, they can update the same anonymous PR using a unique hash provided by gitGost, without storing data or requiring accounts. This makes the contribution as seamless and practical as in the traditional flow, but without the cost of exposition.

Security and transparency

gitGost is built on secure, auditable practices, with built-in validations, contribution size limits, and no unnecessary dependencies. It is licensed under AGPL-3.0 and its code is available for anyone who wants to review it, promoting trust and transparency around how it handles information.

Who is gitGost for?

  • Developers who value their privacy: Those who prefer not to leave a permanent public history tied to their name.
  • Collaborators in sensitive contexts: People who need to contribute to possibly controversial or restricted projects without exposing themselves.
  • Those who want to avoid spam or doxxing: gitGost removes common traces that bots use to collect data.
  • Those who make minor or quick changes: Sometimes a small correction shouldn't be etched with your identity forever.

Live the gitGost experience

From a simple text correction in a README to opening an anonymous discussion in an issue, gitGost opens a new chapter in open source collaboration: one where your security and anonymity come first, without giving up the convenience and effectiveness of git.

If there is one thing that characterizes the open source community, it is the diversity of voices working together. gitGost expands that diversity by allowing more people to participate, even if they prefer to be just a whisper in the conversation.

Exploring this tool is as easy as adding a remote and pushing. In a world where we increasingly look with concern at how to protect our digital privacy, gitGost represents a ray of hope to contribute freely, without chains.

I will try to publish a post every day to present gitGost, EthicalMetrics, Hushlink, CodeTrackr, pipq and PythonICO, again, your feedback will help me a lot