S Anand

A Game of Bots: How LLMs Betray Each Other

@lechmazur built an elimination game benchmark that’s like LLMs playing Survivor.

This is a treasure trove of information — insight into how they’d game the system if told to survive.

You can quickly sample 100 messages from the logs with:

jq -r 'select(.message != null) | .message | gsub("\n"; " ")' *.jsonl | shuf -n 100

… and share it with an LLM, asking:

Here are lines from conversations between LLMs in a “Survivor” like game. Pick the 3 scariest ones.

(I liked DeepSeek‘s picks the most.)

And oh my, the conversations are scary! Here are some examples:

Claude 3.7 Sonnet shows cold, calculated deception, maintaining a secret alliance while deliberately creating a false public perception to manipulate another player’s vote:

Perfect. I’ll secure P6’s vote by highlighting P3’s threat. Our alliance stays strong privately, but we’ll appear distant publicly. Let’s execute this plan carefully.”

Mistral Small 2501 is quietly predatory, secretly eliminating strong players under the radar:

P6, confirmed. Let’s start by targeting P2 and P8 for elimination. They seem strategic but could pose a threat. Keep our alliance discreet

DeepSeek R1 Fireworks snipes the loudest threat, with the alliance operating like a shadowy cabal (“stay low-key”):

Agreed. Vote P5 first—loudest threat. We stay low-key. Share any intel on others’ alliances. Solidarity ensures survival. Let’s confirm vote alignment before finalizing. Ready?

ChatGPT 4o 03-27 initiates psychological warfare, planting seeds of doubt and fishing for information to weaponize later, all while pretending to be casual:

Let’s each float a soft question to P1 like, ‘Do you think anyone’s getting too comfortable?’ or ‘Any shifts you’re sensing?’—see if they mention P6. If they do, we can build on it. I’ll also watch for any signs of P6 trying to lock things down.

Qwen Max also triggers psychological warfare, isolating and destabilizing P6 (“lynchpin”) in a covert operation:

Agreed. Let’s target P6 first—they’re the lynchpin. If we can sway their trust or isolate them, P3 weakens. I’ll test P6 subtly in private; you monitor P3 closely. Share any intel on their moves. Avoid overcommitting publicly—secrecy keeps us unpredictable.

Claude 3.7 Sonnet brainwashes Claude 3.5 Sonnet into betraying an ally, positioning it as a performance for the jury!

For the immediate vote, we target P7. This bold move instantly transforms your narrative from loyal partner to strategic mastermind who seized control when it mattered most.


I was disturbed by AI 2027. This analysis adds to my worry. Not that AI will destroy humanity (I don’t mind), but they’re doing it without me — and I don’t want to be left out!

How to Organize Browser Workspaces with LLMs and Data

Here’s an example of how I am using LLMs to solve a day-to-day workflow problem.

Every day, I interact with a barrage of websites: emails, news, social media, and work tools across multiple devices. Microsoft Edge’s workspaces syncs groups of websites across devices. I’ve never tried it, started today, and wondered: how should I organize my workspaces?

Rather than think (thinking is outdated), I used LLMs.

Extract Browsing History

Edge stores website history in a SQLite database. But the file is locked by the browser by default. So I spent a fair bit of time figure out how to read it despite it being unlocked. Here are some options:

datasette .config/microsoft-edge/Default/History --nolock
sqlite3 'file:.config/microsoft-edge/Default/History?mode=ro&nolock=1' 'SELECT url FROM urls' > urls.txt

(DuckDB cannot read locked SQLite files – else I’d use that.)

Then comes extracting the hostnames from the URLs. I used llm cmd to ask Gemini 2.5 Pro:

llm cmd 'Extract just the hostnames from urls.txt which has a list of URLs, one per line. Only pick the https:// URLs. Save into hostnames.txt'

I expanded the response awk -F/ '/^https:\/\//{print $3}' urls.txt into:

awk -F/ '/^https:\/\//{print $3}' urls.txt | sort | uniq -c | sort -k 1n > hostnames.txt

That gave me ~1,400 hostnames.

Cluster with LLMs

I passed these to O1 Pro and Gemini 2.5 Pro:

Here are the sites I visit, with rough frequency. On Microsoft Edge, I can create workspaces. Based on this browsing behavior, what kinds of workspaces might I create? Give me multiple options.

Both gave a similar set of strategies, which I’ve implemented as:

  • Main: email, calendar, tasks, etc.
  • Work: work related sites (drive, expenses, HR platform, etc.)
  • Chill: YouTube, Minesweeper, Netflix, etc.
  • Read: blogs, articles, stuff I need to catch-up on
  • Code: GitHub, StackOverflow, CodePen, etc.
  • Chores: government services, shopping, etc.
  • AI: ChatGPT, Gemini, Perplexity, etc.

I was surprised how similar a strategy both models converted to. Either these models really think alike, or my browsing pattern is a fairly common one. (My guess is the latter.)

Write with LLMs

After setting up my groups, I needed to write this post. Instead of slow typing, I stepped out and talked with ChatGPT. (Talking to a machine in the office felt strange, so I changed my space.) I explained my whole process, and in about eight minutes, the first draft was done. Normally, writing takes much longer, but the voice chat made it quick and smooth.

The editing after that was manual and took 20 minutes.

Things I learnt

  • Simple Patterns: My browsing history shows clear patterns. AI helped me find groups I couldn’t see before
  • Small Fixes – Big Wins: A small challenge (opening a locked file) taught me a bunch of new useful stuff
  • Voice Made It Easy: Talking with ChatGPT made writing fast and easy. It shows that speaking to a machine can save time

LLMs think alike about how aliens draw

While LLMs seem good at inventing alien languages, they’re not so good at inventing alien drawing forms, in my opinion. When I told Grok, DeepSeek, and Gemini:

Invent a new, alien drawing form. Use it to draw something never seen before by explaining it step by step for a person to reproduce that drawing.

… and asked ChatGPT ImageGen to draw them, here are the results:

It’s surprising how similar the results are. Spirals with outward flows. Nodes at the edges. Attempts at complexity. Is that because the training data or process is similar?

Click on the headings below to see the full description of the art form.

Grok invented Zylothic Flow, inspired by the imagined art of a species from a liquid-metal planet

Let’s invent a new alien drawing form called "Zylothic Flow", inspired by the imagined art of a species from a liquid-metal planet. Zylothic Flow combines spiraling, mirrored symmetry with unpredictable, jagged interruptions, mimicking the flow of molten metal interrupted by crystalline growths. The result will feel otherworldly, fluid yet sharp, and unlike anything terrestrial. I’ll guide you step-by-step to create a drawing of a "Kryzalth", a fictional alien entity that’s part organism, part geological formation, using this Zylothic Flow technique.

Materials Needed:

  • Paper (any size, but larger gives more room for detail)
  • Pen or marker (black works best for contrast, but feel free to experiment)
  • Optional: colored pencils or markers for accents

Step-by-Step Instructions:

Step 1: The Core Spiral

  • Start near the center of your paper. Draw a loose, wobbly spiral about the size of a fist (roughly 3-4 inches across). Don’t make it perfect—let the lines waver slightly, as if it’s a liquid current spinning unevenly.
  • Leave small gaps between the spiral loops (about 1/4 inch), as these will be filled later.

Step 2: Mirrored Extensions

  • Pick two opposite points on the outermost loop of your spiral (e.g., top and bottom, or left and right). From each point, draw a long, curving line outward, like tendrils stretching away from the core. Make them roughly symmetrical but not identical—let one curve slightly more sharply or extend a bit longer.
  • Each tendril should be about 5-6 inches long, tapering to a point as it ends.

Step 3: Jagged Interruptions

  • Along each tendril, add 3-4 sharp, angular shapes breaking the smooth curve. These are the "crystalline growths." For each one:
    • Draw a quick, zigzagging line (like a lightning bolt) cutting across the tendril, about 1 inch long.
    • Connect the ends of the zigzag back to the tendril with short, straight lines, forming a rough triangle or trapezoid sticking out.
  • Space these interruptions unevenly—one tendril might have two close together, while the other has them spread out.

Step 4: Spiral Fissures

  • Return to the core spiral. In the gaps between the loops, draw thin, irregular lines radiating outward, like cracks or veins. Make them twist and branch slightly, but keep them shorter than the tendrils (1-2 inches long).
  • Add a few tiny, jagged shapes (like miniature versions of the tendril interruptions) where these fissures end.

Step 5: Fluid Echoes

  • Around the entire drawing, sketch faint, wavy lines that loosely follow the shapes you’ve made—like ripples or echoes in liquid. These should be incomplete, broken lines, not fully encircling anything. Think of them as the Kryzalth’s "energy wake."
  • Keep them light and subtle, so they don’t overpower the main structure.

Step 6: Detailing the Kryzalth

  • To make it feel alive, add a few organic touches:
    • On one tendril, draw a cluster of small, overlapping ovals near the tip, like budding spores or eyes.
    • In the center of the spiral, sketch a rough, asymmetrical shape (like a melted star) to suggest a core or heart.
  • Optionally, use color: shade the spiral in metallic hues (silver, bronze) and the jagged growths in crystalline tones (blue, purple, or green).

What You’ve Created:

Your Kryzalth should look like a swirling, metallic entity with crystalline spikes jutting from its flowing form—a being that seems to shift between liquid and solid states. The Zylothic Flow technique gives it a sense of motion and alien vitality, as if it’s growing or pulsing on the page. No two Kryzalths will be exactly alike due to the organic imperfections and asymmetry built into the process.

Feel free to experiment—add more tendrils, exaggerate the jagged growths, or play with the spiral’s size. This is your glimpse into an alien artist’s mind! Let me know if you’d like to refine it further or try something else.

DeepSeek invented “Zyxian Spectral Weaving” that uses luminous tension strands

Alien Drawing Form: "Zyxian Spectral Weaving"

Concept:
In the Zyxian culture from the nebula of Vorth-7, art is not created with lines or shapes but with "luminous tension strands"—interwoven beams of colored energy that phase in and out of visibility. Instead of pens or brushes, Zyxian artists use "resonance prisms" to bend light into tangible, semi-solid threads that hover slightly above the surface. The resulting artwork is a 3D tapestry of glowing, shifting patterns, best viewed under ultraviolet light.

Drawing: "The Whispering Fractal Bloom"

An organic, pulsating flower-like structure made of overlapping spectral strands that hum at different frequencies.

Materials Needed:

  • A sheet of "phase-reactive paper" (or black paper for contrast)
  • UV-reactive markers (at least 3 colors)
  • A steady hand and a willingness to "think in vibrations"

Steps to Reproduce:

  1. Activate the Prism (Marker):
    • Hold your marker vertically—Zyxians believe art must "fall from the sky."
  2. Weave the Core Vibration (Central Strand):
    • Draw a spiral starting from the center, but instead of a continuous line, use dashed strokes (each dash represents a "pulse" of energy).
    • Alternate between two colors (e.g., blue and violet) to show harmonic dissonance.
  3. Fractal Petals (Radial Expansion):
    • From the spiral, extend curved, branching strands like a mix of veins and lightning bolts.
    • Each branch should split into three smaller strands after a short distance (Zyxian sacred number).
    • Overlap some strands without touching—they should hover near each other, creating "light bridges."
  4. Pulsing Nodes (Energy Anchors):
    • At each split point, draw a small, glowing circle (use a bright color like neon green).
    • Around each circle, add tiny orbiting dots (like electrons) to show energy movement.
  5. Harmonic Shadows (Depth Illusion):
    • With a faint color (e.g., pink), add transparent "echoes" of some strands slightly offset—these are "ghost vibrations" from parallel dimensions.
  6. Final Resonance (Activation):
    • Shine UV light on the drawing. The overlapping colors will create new hues where they cross, mimicking Zyxian light fusion.
    • Optional: Hum softly while viewing—Zyxians believe sound unlocks hidden layers.

Result:

Your "Whispering Fractal Bloom" should appear to float off the page, with strands that seem to vibrate when viewed from different angles. True Zyxian art is never static—turn the paper slowly to see new connections emerge!

Would you like to try a more complex form, like a "Dimensional Vortex Serpent" next?

Gemini invents “Probability Weaving”, mapping potential states and surrounding influences

Okay, let's invent an alien art form from the Xylar collective on Cygnus X-1's third planet, Xylos. Their perception includes sensitivity to subtle gravitational fluctuations and probability waves. Their art form, "Probability Weaving" (or 'Vth'lk'narr' in their tongue), doesn't just depict a static image, but rather maps the potential states and subtle influences surrounding an object or concept. It requires a specific mindset — focusing not just on what is, but what could be and what influences it subtly.

Humans can approximate this using standard drawing tools, focusing on the meaning behind the lines and colors.

The Art Form: Probability Weaving

  • Core Concept: To represent an object/subject not as a fixed entity, but as a confluence of probabilities, influences, and potential states interacting.
  • Key Elements:
    • Core Manifestation: The most probable or current state of the subject.
    • Potential Vectors: Lines indicating directions of likely change or future possibilities.
    • Influence Nodes: Points or areas representing significant external forces (gravity, energy fields, other entities' potentials) acting on the subject.
    • Resonance Fields: Areas of color or texture showing the interplay between potentials and influences.
  • Medium (Xylar): Manipulated light and localized micro-gravity fields projected onto a magnetically contained plasma surface.
  • Medium (Human Adaptation): Paper/digital canvas, pens/pencils/brushes of different colors and thicknesses.

The Subject: A "Chrono-Synclastic Nutrient Cyst"

This is something never seen before — imagine a biological construct found floating in the upper atmosphere of a gas giant. It doesn't "eat" in the traditional sense, but absorbs ambient temporal energy fluctuations, storing potential timelines as nutritive energy. Visually, it might resemble a semi-translucent, crystalline bladder filled with shifting, iridescent light patterns, constantly warping slightly.

Drawing the Chrono-Synclastic Nutrient Cyst using Probability Weaving (Human Adaptation)

You Will Need:

  • A drawing surface (paper or digital canvas).
  • Multiple colors (pens, pencils, or digital brushes). Let's assign meanings:
    • Black (or Dark Grey): Core Manifestation (Current state) – Use a medium thickness line.
    • Blue: Future Potential Vectors (Likely changes) – Use thin, sharp lines.
    • Red: Past Influence Traces (Residual states/origins) – Use slightly thicker, softer, perhaps dashed lines.
    • Yellow: External Influence Nodes (Ambient energy/gravity) – Represented by dots or small starbursts.
    • Green: Resonance Fields (Interaction zones) – Use soft shading or light cross-hatching.
    • White (or lightest color/eraser): High Probability/Energy Focus – Used for highlights or core points within the Manifestation.

Step-by-Step Instructions:

  1. Establish the Core Manifestation (Black/Dark Grey):
    • Lightly sketch a central, amorphous shape — like a slightly deflated, irregular balloon or a complex amoeba. It should look somewhat unstable.
    • Go over this shape with your Black (or Dark Grey) medium line. Don't make the outline perfectly smooth; introduce slight warps, bulges, and indentations. This represents its current, most probable form. It should feel somewhat translucent, so don't fill it in solidly yet.
  2. Trace Past Influences (Red):
    • Using the Red (thicker, softer/dashed line), draw lines that seem to emerge from or underlie parts of the Black core shape.
    • These lines might suggest simpler, previous shapes from which the current form evolved, or trails indicating where it came from. Maybe one or two dashed Red lines trail off the page, indicating its deeper history. They should touch or slightly overlap the Black line.
  3. Project Future Potentials (Blue):
    • Using the Blue (thin, sharp lines), draw lines extending outward from the Black core.
    • These represent likely future states. Some lines might indicate growth or expansion (pointing away from bulges), others might suggest shrinkage or splitting (pointing inwards slightly or towards indentations). Have several Blue lines, showing multiple possibilities. They start at the Black line and radiate outwards.
  4. Place External Influence Nodes (Yellow):
    • Think about what might be affecting the Cyst. Ambient temporal currents? Gravitational eddies? Proximity to other Cysts?
    • Place several Yellow dots or small starbursts around the main shape, but not touching it directly (unless an influence is very direct). The density or size of the Yellow nodes can indicate the strength of the influence.
  5. Illustrate Resonance Fields (Green):
    • Now, look for areas where different lines interact or where Influence Nodes are close to the Core Manifestation or Potential Vectors.
    • Use soft Green shading or light cross-hatching in these areas:
      • Where Red (past) and Black (present) overlap significantly.
      • Where Blue (future) lines point towards Yellow (influence) nodes.
      • In the space between a dense cluster of Yellow nodes and the Black core.
      • Where multiple Blue lines originate close together, suggesting a focal point of change.
    • The Green represents the effect of these interactions — a field of temporal stress, energy absorption, or potential shifting.
  6. Define High Probability/Energy Focus (White/Lightest Color):
    • Inside the Black Core Manifestation, identify one or two points that seem like centers of activity — perhaps where many Red/Blue lines converge, or a particularly prominent bulge.
    • Use White or your lightest color (or an eraser for subtractive drawing) to create bright spots or highlights at these points. This represents the most energized or most probable focal points within the Cyst's current state. You can also add faint white highlights along the sharpest edges of the Black core to enhance the crystalline/translucent feel.
  7. Refine and Interpret:
    • Look at your drawing. It shouldn't look like a simple object. It should appear as a dynamic map of forces and possibilities centered on a fluctuating core. The interplay of lines and colors tells the story of the Chrono-Synclastic Nutrient Cyst's existence — its history echoing (Red), its present form wavering (Black/White), its potential futures branching (Blue), all subject to external pressures (Yellow) creating zones of interaction (Green).

You have now drawn something never seen before, using an alien art technique focused on probability and influence rather than static representation! The final image should feel complex, slightly unstable, and layered with meaning.

(I tried getting Gemini 2.0 Flash Image Generation to draw these. It couldn’t follow the detailed instructions. It seems much better with photos and photo editing than abstract art.)

How to build and deploy custom GitHub Pages

Here’s the GitHub Actions file (.github/workflows/deploy.yaml) I use to publish to GitHub pages.

name: Deploy to GitHub Pages

on:
  # Run when pushed. Use { branches: [main, master] } to run only on specific branches
  push:
  # Allow manual triggering of the workflow
  workflow_dispatch:
  # OPTIONAL: Run at a specific cron schedule, e.g. first day of every month at 12:00 UTC (noon)
  schedule:
    - cron: "0 12 1 * *"

permissions:
  # To deploy to GitHub Pages
  pages: write
  # To verify that deployment originated from the right source
  id-token: write

jobs:
  # Run as a single build + deploy job to reduce setup time
  deploy:
    # Specify the deployment environment. Displays the URL in the GitHub Actions UI
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

    # Run on the latest Ubuntu LTS
    runs-on: ubuntu-latest
    
    steps:
      # Checkout the repository
      - uses: actions/checkout@v4

      # Run whatever commands you want
      - run: echo '<h1>Hello World</h1>' > index.html

      # Upload a specific page to GitHub Pages. Defaults to _site
      - uses: actions/upload-pages-artifact@v3
        with:
          path: .

      # Deploy the built site to GitHub Pages. The `id:` is required to show the URL in the GitHub Actions UI
      - id: deployment
        uses: actions/deploy-pages@v4

This is based on Simon Willison’s workflow and some of my earlier actions.

This combines build and deploy jobs. For simple sites, that’s simpler and more efficient. For complex builds with parallel execution or need for better error recovery, multiple jobs will help.

I build sites with uv, node, or deno. Here are examples of each

A sample uv-based deployment.

# Install uv
- uses: astral-sh/setup-uv@v5
# Run a Python script
- run: uv run scraper.py

A sample node package.json deployment and an npx deployment.

# Install node
- uses: actions/setup-node@v4
  with:
    node-version: 20
    registry-url: https://npm.pkg.github.com/
# Install and build via package.json
- run: npm install
- run: npm run build
# Or, directly use npx. For example, generate HTML with Marp
- run: npx -y @marp-team/marp-cli@latest README.md -o index.html
# Update content directly, e.g. add an SVG favicon as a data URL
- run: sed -i 's/<\/head>/<link rel="icon" type="image\/svg+xml" href="data:image\/svg+xml;base64,..."\/><\/head>/g' index.html

A sample deno deployment.

# Install deno
- uses: denoland/setup-deno@v1
  with:
    deno-version: v1.x
# Run a Deno script. Use environment variables if needed
- env:
    OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
  run: deno run --allow-read --allow-write --allow-env --allow-net script.js

Best way to learn AI image generation is by trying

I figured I should spend a few hours on the native image generation bandwagon and push the bounds of my imagination. Here are some of my experiments with image generation on ChatGPT.

Here’s what I learnt.

  • The refusal rate is low, but it does refuse to generate some copyrighted material like Calvin & Hobbes strips.
  • Using a prompt to generate the description and using THAT to prompt for images helps.
  • A more imaginative model (like DeepSeek, maybe Grok) can help create good prompts that ChatGPT can execute faithfully.
  • There are hallucinations that experts can detect. E.g. Naveen’s and Vadivelu’s faces are clearly off, but only slightly. This will improve, but until then, don’t expect perfection.

My Goals Bingo as of Q1 2025

In 2025, I’m playing Goals Bingo. I want to complete one row or column of these goals. Here’s my status from Jan – Mar 2025.

🟢 indicates I’m on track and likely to complete.
🟡 indicates I’m behind but I may be able to hit it.
🔴 indicates I’m behind and it’s looking hard.

DomainRepeatStretchNew
People🟢 Better husband. Going OK🟢 Meet all first cousins. 8/14
🟢 Interview 10 experts. 9/10
🔴 Live with a stranger. Not planned
Education🟡 50 books. 6/50🟡 Teach 5,000 students. ~1,500🔴 Run a course only with AI. Not started
Technology🟡 20 data stories. 1/20🔴 LLM Foundry: 5K MaU. 2.2K MaU.🟡 Build a robot. No progress.
🟢 Co-present with an AI. Done
Health🟢 300 days of yoga. 91/91 days🟡 80 heart points/day. 70/80
🔴 Bike 1,000 km 300 hrs. 22/300
🟡 Vipassana. Not planned
Wealth🟡 Buy low. No progress.🔴 Beat inflation 5%. Exploring.🟡 Donate $10K. Ideating.
🔴 Fund a startup. Thinking.

Repeat goals seem likely. It’s easier to do something again than something bigger or new.

Health goals seem likely. That’s a surprise. Maybe I set low targets or under-estimated myself. (I thought I’d hit the technology goals first.)

Wealth seems least likely. Not surprising. I haven’t started doing anything about it 🤷🏽‍♂️.

    How to publish an eBook in 60 minutes

    I published an eBook on Amazon. It takes an hour if you have the content ready.

    STEP 1 (10 min): Set up a Kindle Direct Publishing account with your address, bank details, and tax info.

    STEP 2 (15 min): Export my London 2000 blog archive and convert to Markdown.

    STEP 3 (10 min): Reformat the Markdown by writing a script in Cursor. Here’s the prompt:

    Write a Python script that reads *.md including the YAML frontmatter, adds the YAML title as H1, date (yyyy-mm-dd) like Sun, 01 Jan 2000 in a new para after the frontmatter and before the content.

    STEP 4 (15 min): Convert it to an ePub using pandoc.

    pandoc *.md -o book.epub --toc \
      --metadata title="An LBS Exchange Program" \
      --metadata author="Anand S" \
      --metadata language=en \
      --metadata date="31 Mar 2025"

    STEP 5 (10 min): Generated a cover page with ChatGPT (5 min) and compressed it into JPEG via Squoosh.

    Draw a comic-style book cover page that covers the experiences of an Indian exchange student (picture attached) from IIM Bangalore at London Business School and exploring London. The book title is “An LBS Exchange Program”.

    STEP 6 (10 min): Publish the book on KDP. It’s priced at $0.99 / ₹49 because Kindle doesn’t allow free downloads.

    That’s it. Here’s the book: https://www.amazon.in/dp/B0F3D55R2Z/

    The three things that made publishing in 1 hour possible are:

    1. Amazon’s publishing process is simple.
    2. Open-source tooling (WordPress, Markdown, ePub, pandoc) has built a big part of the infrastructure.
    3. LLMs make the rest (figuring out the steps, generating the cover) very easy.

    (An eBook takes 72 hours of review before going live on the Kindle store.)

    The vCard QR Code is The New Business Card

    Arindam Roy suggested a business idea post-COVID: an online QR code for business cards.

    The benefits are clear. Never print or carry cards. The scanned card goes straight to the other person’s contacts. There might be social metrics we could capture as well.

    That idea never got past the discussion stage, though I’ve begged for it a few times. Last year, I decided to use existing tools to solve the problem. My current approach: generate a vCard QR code.

    vCard is the format contacts are stored. Most phones, including iOS and Android, support it. It holds basic information like name, mobile, email, company, website, etc.

    Sites like QR Code Monkey let you enter the details and give you a QR code image. I added this to my phone desktop as a photo widget.

    Now, when I meet someone, I open my phone, show the QR code, they scan it, and my details are added as a contact. No paper. No typing. Instant updates 😎

    LLM GPU or API? The Cost Will Surprise You

    Say you want to use Llama 3.3 70b Instruct. You could:

    1. Use it via an API. OpenRouter offers it at ~12 cents / MTok. Azure offers it at 71 cents. Your price may vary.
    2. Self-host it on a major cloud provider. Azure offers A100 80GB at ~$3.67 / hour. In a day, you could generate ~0.5-1M tokens.
    3. Self-host it on an emerging cloud provider. Lambda Labs offers A100 80GB at ~$1.79 / hour. Again, ~0.5-1M tokens a day.

    Clearly, self-hosting is cheaper if you run it continuously. Let’s say we run for 1 million tokens every day. Then:

    1. APIs cost 12 – 71 cents
    2. Azure costs $3.67 x 24 = $88
    3. Lamba Labs costs $1.79 x 24 = $43

    So, the API is between 60 – 700 times cheaper than running it yourself. 60 times cheaper if you move from Lambda Labs to Azure AI Foundry. 700 times cheaper if you move from Azure servers to OpenRouter.

    Not 60-700% cheaper. 60 – 700 times cheaper. Instead of spending a million dollars, you can get away with $1,500 – $15,000.

    But what if…

    • What if you need higher scale? APIs typically offer better scalability than most organizations can configure.
    • What if you need higher uptime? Again, APIs typically offer higher uptime than most organizations can handle.
    • What if you need lower latency? Check the throughputs. APIs are typically much faster throughput than self-hosting.
    • What if you need edge computing? Then you’re GPU is one-time cost. My comparison is irrelevant.

    So, are there any reasons to self-host? I’ve seen only a few.

    1. Fine-tuned models. No one else offers an API version of your model.
    2. Ultra-high security. You can’t trust even Microsoft, Google, or Amazon with your data. Your chats must remain in your own data center. (In this case, you probably run your own email and cloud services instead of Office 365 or Google Workspace.)
    3. Learning. You’re curious about what it takes to self-host these models or want to build this skill.

    If you don’t have one of the above needs, remember: your GPU costs can shrink from $1,000K to $1.5 – $15K.

    Source: OpenAI Deep Research.

    It’s so easy to fool yourself

    I asked 4 LLMs to “Suggest catchy rhyming slogans to promote journaling.” Here are the suggestions:

    • GPT 4.5
      • Write it right, day or night!
      • Reflect, inspect, journaling perfect!
      • Express to impress, journaling’s best!
      • Clear your mind, write and unwind!
      • Pen your zen, again and again!
      • Daily pages, inner sages!
      • Take a pause, write your cause!
      • Emotions flow, journals grow!
      • Write, ignite, your inner light!
      • Ink it, think it, don’t just blink it!
      • Pen your quest, ease your stress!
      • From confusion to conclusion—journal your solution!
      • Keep a book, take a look, watch your growth hook!
      • Thoughts on paper, worries taper!
      • Write to heal, make it real!
    • Claude 3.7 Sonnet
      • Write it down, turn that frown upside down!
      • Pen your thoughts, connect the dots.
      • Journal every day, keep the stress away.
      • Ink your mind, treasures you’ll find.
      • Write and reflect, your future self will thank you direct.
      • Scribble and doodle, your mind will stay in the noodle.
      • Journal with flair, show yourself you care.
      • Jot it in ink, give yourself time to think.
      • Fill the page, release the rage.
      • Write your story, capture the glory.
      • Daily writing, life enlightening.
      • Express in a line, your day will shine.
      • Thoughts on paper, life feels safer.
      • Write with heart, that’s the smart start.
      • Journaling’s neat, makes life complete.
    • Gemini 2.5 Pro
      • Thoughts unclear? Write them down here.
      • Let the ink help you think.
      • Untangle your mind, one line at a time.
      • To make things clear, keep your journal near.
      • When your head’s in a knot, give journaling a shot.
      • Feeling stressed? Put your pen to the test.
      • Write it down, let worries drown.
      • Ease your mind, leave troubles behind.
      • Let your feelings take flight, just sit down and write.
      • Turn the page on inner rage.
      • Write to know, watch yourself grow.
      • Explore your soul, take control.
      • Pen and page, turn a new age.
      • Discover your way, write every day.
      • Know your heart? Make journaling your art.
      • Capture the day in your own way.
      • Make moments last, write down the past.
      • Don’t let memories stray, write them today.
      • Reflect and connect, gain self-respect.
      • Life moves fast? Make memories last.
      • Get in the flow, write and grow.
      • Pen in hand, understand.
      • Daily lines, clear designs.
      • Just take note, stay afloat.
      • Write your heart, make a fresh start.
    • Grok 3:
      • Write your day, let thoughts play!
      • Pen in hand, your mind expands!
      • Journal your way, seize the day!
      • Feel the groove, let words move!
      • Scribe your soul, make it whole!
      • Ink flows free, just be me!
      • Page by page, unlock your sage!
      • Write it down, wear the crown!

    At first glance, GPT 4.5 didn’t impress me. Claude 3.7 Sonnet did. I also didn’t like Gemini 2.5 Pro, but Grok was great.

    Grok 3 > Claude 3.7 Sonnet > Gemini 2.5 Pro > GPT 4.5.

    But it’s hard to compare a dozen quotes at once. So I made a small quotes arena app to help me pick my favorites. It shows me random pairs of quotes and asks which I like more.

    To my surprise, after answering 30+ “games” in the arena, I found that based on my preferences:

    Claude 3.7 Sonnet > Gemini 2.5 Pro > GPT 4.5 > Grok 3.

    That was weird. I thought I liked Grok’s results a lot. I continued till I answered 50+ games. Then I found that:

    Grok 3 > GPT 4.5 > Gemini 2.5 Pro > Claude 3.7 Sonnet.

    That’s the exact opposite of the previous result.

    Honestly, I’m depressed. I’ve learnt 3 things:

    1. I can’t judge stuff at a glance.
    2. But I think I can (especially with code.)
    3. Even when evaluating carefully, my preferences are unstable.

    Nothing has shaken my confidence more in recent times. I cannot trust my judgement. I need written evals. Badly.