Sleepin' in the corn bed

I recently learned that when people search me up they often land on a YouTube video of an interview about solar power I did with one of my former managers at GitHub. I was dismayed to learn this, as that particular piece of content was not very interesting or illuminating for me, and it's not really representative of the kind of work I'm most proud of.

So, what am I proud of? My corn bed.

What was the corn bed, you ask? A simple wooden box filled with dried corn. You could climb into it and relax. It started like the story of the little red hen: I talked about wanting to build a corn bed for years, but my enthusiasm was mostly met with confusion or skepticism from my friends and family. People thought it was a dumb idea. They thought it would be messy. They thought it would become overrun with vermin. They thought I was a fool. But then I built the thing, and everyone changed their tune. People couldn't get enough of it. It was such an undeniably soothing experience to climb into that box, lie down, and really relax. (Cue a long sigh here... "aaahhhh")

When people look me up online, I want the corn bed to be the first thing they find. It was a creative success, and a simple project that tangibly improved my life and the lives of people around me.

Today I got an email from a stranger:

Hey Zeke. I stumbled upon your corn bed blog post and I am wondering did you ever use the bed for actual sleep? Were there any problems in doing so? I imagine there’s lots of dust generated from the movement of the kernels- but is it a comfortable sleeping experience? I feel like it would be divine.

Rather than responding directly to that stranger, I figured I'd answer their questions here on news.ziki.boo, my fancy new microblog thingy, which I created for just this kind of purpose.

Sleep: Did I sleep in the bed? Yes! And it was divine. But it took a while to get the process dialed, and it wasn't ideal in all conditions. At first I thought I could just jump right in with a pillow and a blanket to put over me, but soon realized that wasn't great. While it's nice to roll around freely in the corn for play or for a short nap, it's not really great to spend a whole night submerged in it. The main reason for this is temperature regulation. Because the corn kernels have so much surface area, even the slightest movement of your body causes a disturbance of the kernels that causes cooled surfaces to come in contact with your skin. So I found that it was too easy to get cold, even in the summer in East Los Angeles. I suppose you could come up with some kind of system for warming the whole bed and the kernels within it, but I didn't really consider that. Sounds complicated.

The sleep setup that ended up working best for me was putting down a flat sheet over the corn, then snuggling into that. I still got the benefit of the form-fitting shape, but without direct contact between the kernels and my skin. I would, however, generally leave enough room at the foot of the bed with no sheet so I could "dip" my bare feet into the corn. That was really nice.

Dust: Dust wasn't really a problem. The bed was filled about 6 inches deep, and the little particles and dust were never noticeable as they naturally settled down to the bottom. When I eventually dismantled the corn bed to move to Paris, I found a layer of sediment along the bottom of the bed, but there wasn't much of it and it wasn't gross or anything. Kinda like the dust at the bottom of a box of cereal.

Cow corn: The stranger didn't ask about this, but I want to mention it while I'm here. I built the first bed with "cow corn", a variety of corn that's fed to livestock, and supposedly not fit for human consumption. It looked a bit like hominy, if you know that is. I chose to use cow corn because the kernels were large, and since it was meant for livestock it was much more affordable than something like popcorn kernels.

Corn alternatives: It's been over 15 years since I built that corn bed, and I hope to someday build another one, or something similar. My family has suggested considering other legumes or grains like beans, lentils, peas, rice, etc. I'm sure they'd probably all be great in their own way, but I still think cow corn probably hits the sweet spot in terms of size and affordability. Another alternative could be small clay balls. At the Korean Wi Spa in downtown Los Angeles they have a variety of saunas, one of which has a floor filled with a layer of small terra cotta balls. Think "ball pit", but it's only a few inches deep, and the balls are a bit smaller than marbles. Those were pretty nice, and arguably more sanitary than any perishable food product. You could get those wet and not have to worry about things going south. Perfect for a sauna!

Stranger, I wish you luck in your journey to sleep in a corn bed of your own. Even if it ends weirdly, I doubt you'll regret the experience.

Now, to figure out how to get my corn bed content to be the first result when people search me up... 🤔

The corn bed

State of the Claudes

Some of my family members are business owners. They've been using ChatGPT to help them do their work but lately they've found it to be slow, unreliable, and forgetful. Now they're trying out Claude to see how it compares.

I'm a long-time Anthropic customer. Here's my take on the different Claude models and their capabilities.

Claude models come in different flavors, on a spectrum from small/fast/cheap/inaccurate to large/slow/expensive/(over)thinking.

In order: Haiku, Sonnet, Opus, Fable, Mythos

Each of these models has version numbers attached. First there were Haiku 3 and Sonnet 3, then Sonnet 3.5, then Sonnet 3.6, then Sonnet 4.0 and Opus 4.0… I think we're currently at 5.0 across the whole suite of models. It changes fast.

Haiku: dinky, cheap, good for very basic tasks. Useful for computer programs that need to do stuff like summarizing text or sentiment analysis. But not a good choice for a general-purpose chat. Makes a lot of mistakes.

Sonnet: fast and affordable. doesn't think too hard. my current favorite for all tasks. ✨

Opus: expensive and supposedly smart. Opus was the best model on the market around versions 4.5 and 4.6, but then famously went completely bonkers and counterproductive in version five, as parodied in this “opus fived” site.

Fable: Currently the most powerful Anthropic model available to the public. Expensive. Good for “long horizon” programming tasks, like doing a bunch of research and compiling evidence and making a plan and building a thing and troubleshooting independently without human input. Fable kind of marks a change to models that are supposedly able to “do more shit on their own”.. which sounds cool, but I currently find that to generally be a bad idea and a waste of money, unless you're a software engineer with deep pockets and a very well-defined project at hand, with no variables or uncertainty in your plan for how to build something. When there's any ambiguity in a plan, these models can go on all kinds of expensive and misguided tangents.

Mythos: The souped-up version of Fable that only big-shot companies and research institutions and the US government have access to, because it's capable of discovering vulnerabilities in software that humans were never able to find before, and using those exploits to majorly fuck up governments, companies, or really whatever internet-connected system it wants to. This was the model the white house banned for a few weeks.

Phew! Okay so.... my hot take is yeah just use Sonnet for now. It's fast. It's affodable. It makes good choices. It doesn't overthink.

Slop disclosures

Every page on my website now has a slop disclosure. Currently over 97% slop-free, but still want to be honest about it.

A disclosure box reading "Disclosure: 42% of this post was written by AI. See the analysis."

A scheduled job runs every page through Pangram and commits the results, so the numbers stay current as I publish. More on how it works: zeke.sikelianos.com/slop-detection.

Perplexity

Until yesterday, I knew "perplexity" only as the name of a commercial AI product.

Turns out perplexity is also a technical term from the machine learning world: it's a metric that represents how "surprising" the next token is. It can be used to help differentiate human-generated content from AI-generated content.

AI text is predictable. Humans are not!

https://zeke.sikelianos.com/slop-detection

Slop detection thumbnail

Slop detection

I signed up for Pangram and did a slop check on my personal website. Since I created all the content, I know which posts are real and which ones I regrettably fired from a slop cannon in a moment of weakness.

Of the 100,000-ish words on my site, 2.8% are slop.

Full writeup: https://zeke.sikelianos.com/slop-detection

Suzy Slop, a gross-out cartoon lunch lady serving AI slop

Dial-a-Repo

Introducing Dial-a-Repo

Pick up your phone and talk to any public GitHub repository.

zeke.sikelianos.com/dial-a-repo

Replicate skill for local workflows

Whenever I run Replicate AI models from my local computer, I invariably end up repeating a lot of the same instructions to my agent harness. This includes stuff like making sure to run models in parallel to keep things snappy, saving all the the outputs locally, using sensible filenames, etc. Today I wrapped those instructions up into a new agent skill, so I don't have to repeat myself every time.

Check it out at https://github.com/zeke/replicate-local-workflow-skill

Livia's art show

Last week my aunt Livia hosted her first art show since 1986, at the Community Arts Workshop in Santa Barbara. She had over 650 artworks on display, and I helped her photograph, label, title, and price every single piece. I also used some AI magic to whip up a system to manage all the inventory and connect it to a point-of-sale system. It was a blast!

Read the post here: https://zeke.sikelianos.com/livias-art-show

apple painting by Livia Zirkel

My own private Idaho

What is the origin of the title/phrase "my own private idaho"?

I'm familiar with the movie but don't know why it's called that.

The title is Gus Van Sant's own invention, not a pre-existing idiom he borrowed. But it plays on a real (if a bit obscure) American slang phrase, "one's own private Idaho," which was already floating around before the film — used to mean a person's own isolated, dissociated inner world, an escape from reality into your own head. Idaho works for the metaphor because it's the stereotypical "empty," rural, faraway state — the middle of nowhere.

The most direct proximate source for Van Sant was actually the B-52's 1980 song "Private Idaho," which uses the phrase the same way — a kitschy warning about retreating into your own detached fantasy world ("You're living in your own private Idaho / Underground like a wild potato"). Van Sant borrowed the phrase from that song title/lyric for his 1991 film about Mike (River Phoenix), a narcoleptic hustler who literally and figuratively drifts out of reality into his own dream-state whenever he falls asleep — that private, inaccessible inner world is his own private Idaho.

So: slang phrase → B-52's song → Van Sant's title, each layer reinforcing the same idea of a solitary internal escape hatch from the real world. Fits your subtitle nicely too, as a wink at your own little detached feed of tweets.

OBS pointer zoom

I made an OBS plugin that mimics that sweet sweet zoom effect from the @screenstudio Mac app, but instead of doing it as a post-video effect, you do it live.

Tap a hotkey to zoom in on the cursor of the screen you're recording. Tap again to zoom back out.

Here's the repo: https://github.com/zeke/obs-pointer-zoom


OBS is endlessly fun, especially when you get into repetitive hall of mirrors stuff.

here's me getting crazy with the cheez whiz...

Pi is my default coding agent

https://pi.dev

Pi is now my default coding agent.

It's faster than any other agent I've used.

Its system prompt is small so you really feel the personality of the underlying model.

The tools are few, but usually enough.

It faithfully follows the Agent Skills format.

It's extensible so I can make it my own.

It knows how to read its own source code.

It has built-in support for Cloudflare AI gateway with unified billing, so I can run any model and I don't have to bring any API keys.

Here's a prompt you can use to set up your own gateway: https://gist.githubusercontent.com/zeke/4a6e62478a495228492cda836441a8a9/raw/32bb7fc4d1bcd482358a5715b398d55ec042eca6/pi-cloudflare-ai-gateway-prompt.md

The Clicky team's video production style continues to inspire. 😍 https://x.com/FarzaTV/status/2074973272463310905

Implicit vs explicit skills

Today I learned that some agents support skills that can only be explicitly invoked by the user. That's handy!

Alas, support is mixed and it's not part of the Agent Skills standard.

Claude Code, Pi, and Cursor support disable-model-invocation as a frontmatter field.

Others do it differently, or not at all. See https://gist.github.com/zeke/0f654737ec01b20e9bf85d3cc0bc1c14

I just added a "Learn anything" exercise to OpenCode School that uses @mattpocockuk's excellent /teach skill.

Give it a topic you want to learn. Not just computer stuff. Literally anything.

Your agent interviews you to understand what you already know and what your learning goals are. Then it generates a local website with personalized lessons. Not just a wall of text, but visually engaging pages with graphics, interactive elements, and quizzes, saved to a folder on your own machine.

https://opencode.school/exercises/learn-anything/

(This is tailored for OpenCode but you can probably throw this URL at any agent and still have a good time.)


I just added a "Learn anything" exercise to OpenCode School that uses @mattpocockuk's excellent /teach skill.

Give it a topic you want to learn. Not just computer stuff. Literally anything.

Your agent interviews you to understand what you already know and what your learning goals are. Then it generates a local website with personalized lessons. Not just a wall of text, but visually engaging pages with graphics, interactive elements, and quizzes, saved to a folder on your own machine.

https://opencode.school/exercises/learn-anything/

(This is tailored for OpenCode but you can probably throw this URL at any agent and still have a good time.)


Bonus: Each lesson in my Durable Objects "course" includes an audio podcast, generated by NotebookLM.

Notebook LM doesn't have an official API, but this project worked nicely for generating the podcasts right from my agent session: https://github.com/teng-lin/notebooklm-py

You know that feeling where you use a terminal or agent harness that doesn't let you click on hyperlinks for a while, and you get used to that, then you switch to one that does?

It's a revelation. A rediscovery of hypermedia.

(I'm a cheap date)

I was never one to write "plz", but now I add it to the end of many agent prompts. Anyone else doing this? Gotta show a little gratitude.

In case you missed it, "Log in with Cloudflare" is now a thing. (aka self-managed OAuth)

https://login-with-cloudflare.ziki.boo/ https://x.com/zeke/status/2064797383339471359

π🧡π

The Pi coding agent plays nicely with Cloudflare's AI Gateway.

Docs: https://developers.cloudflare.com/ai-gateway/integrations/coding-agents/pi/

💸 In an effort to check my Token Privilege, I've been experimenting with using smaller and cheaper models in my daily agent usage.

I use OpenCode with Cloudflare's AI Gateway, which lets me switch to any model from any provider on the fly. Small open-source Workers AI models, or big fancy Anthropic/OpenAI models.

I take it for granted, but it's kinda wild that you can switch to a different model in the middle of an OpenCode session and it'll just keep working. All the context of the session comes with you in the switching of the model.

This comes in handy when you're using a small model and it starts flailing mid-session: you can easily switch the model to Opus or GPT to bail out the session and get it back on track.

do you know what it means?

https://prefixes.ziki.boo/?p=syn

fomoThings -= 1

Thanks to @megaconfidence, I now have a "personal agent" that I can chat with through Telegram. Got it connected to my GitHub and running GPT and Claude models with vision support through Cloudflare's AI gateway.

No Mac Mini required.

No containers, so it's fast. Uses Code Mode and Dynamic Workers instead.

Whole puppy runs on Cloudflare.

Not gonna lie it took a good bit of back and forth with my local OpenCode agent to get it all wired up and working properly, but it was worth the effort.

Confession: I just had to look up how to merge a git branch to main. 😅

Learn your English prefixes with these flashcards.

https://prefixes.ziki.boo

I thought I had mad skills.

Turns out I only have a few.

https://github.com/zeke/skills

My faster Chrome Devtools skill now supports WebMCP discovery when using Cloudflare's Browser Run.

Point your agent at a website. If the site has WebMCP tools defined, the agent will use them instead of slowly clicking around in the dark trying to figure out how to interact with the site.

WebMCP support is still in beta in Chrome, so the trick was updating the skill to enable Chrome beta features by default for all new Browser Run instances.

Hat tip to @ruifigueira for the guidance. 🙏

https://github.com/zeke/faster-chrome-devtools-skill


Context:

https://github.com/zeke/faster-chrome-devtools-skill/pull/10/changes

https://developers.cloudflare.com/changelog/post/2026-04-15-br-webmcp/

It uses GitHub Actions and the GitHub Deployments API to automatically create preview deployments whenever you open a pull request, and tear them down when you merge or close the PR.This allows you to test your changes in a live environment before shipping them to production.

I made this a skill because there's some nuance to getting these workflows right, and I do it often enough that I want to make the process repeatable.

Try it out and let me know if you hit any snags!


It uses GitHub Actions and the GitHub Deployments API to automatically create preview deployments whenever you open a pull request, and tear them down when you merge or close the PR.This allows you to test your changes in a live environment before shipping them to production.

I made this a skill because there's some nuance to getting these workflows right, and I do it often enough that I want to make the process repeatable.

Try it out and let me know if you hit any snags!

Any WebMCP experts out there?

I'm trying to get agents to reliably auto-detect the presence of WebMCP support in my app, but they generally don't notice or use it unless I specifically mention it in my user prompt like "... and use WebMCP pretty please."

I've added content to the page, adding a console.log message, screen reader notes, and of course populating the document.modelContext object, but those aren't doing the trick.

Any ideas?


This might help (in the Cloudflare Browser Run case, at least):

WebMCP requires Chrome beta features. We have an experimental pool with browser instances running Chrome beta so you can test emerging browser features before they reach stable Chrome. To start a WebMCP session, add lab=true to your /devtools/browser request.

https://developers.cloudflare.com/changelog/post/2026-04-15-br-webmcp/

CLI > MCP

This thing actually works, and it's noticeably faster!

Yank the old Chrome Devtools MCP config out of your agent's JSON file and use this instead:

npx skills add zeke/faster-chrome-devtools-skill --global --all --yes https://x.com/zeke/status/2069214777432477978

⚡️🐌⚡️ The Faster Chrome DevTools Skill is now even faster.

Instead of using DevTools MCP and the Puppeteer runtime, it now bundles a dependency-free Node.js client that speaks Chrome DevTools Protocol (CDP) directly over WebSocket.

Thanks to @mattzcarey for this awesome improvement! 🧡

Check it: https://github.com/zeke/faster-chrome-devtools-skill


Why a CLI instead of an MCP server?

  1. Works anywhere. Any agent with a shell can use it. No MCP server to configure.

  2. Full CDP protocol. MCP has high-level tools plus JS eval, but the CLI can call any Chrome DevTools method.

  3. Leaner context. No more loading always-on tool schemas; the skill loads on demand and runs through your agent's shell.

  4. No screenshot bloat. MCP inlines screenshots into model context, but the CLI writes them to a file and returns the path.

Using AI to understand how http://neal.fun stuff works.

By far my most popular shirt.

https://www.homocats.com/store/f/ai/shirt

Notebook LM has gotten really good.

Dump a bunch of context into the chat, then generate a podcast, video, quiz, flash cards, etc.

And now there's a mobile app too.

And it's free.

https://notebooklm.google

⚡️🐌⚡️

I made some updates to the faster chrome devtools skill

check it: https://github.com/zeke/faster-chrome-devtools-skill


I'm generally not keen on X emoji treatment but this looks pretty tight

let's update the global AGENTS.md to emphatically require all new projects to include their own self-updating AGENTS.md


https://github.com/zeke/agents.md/pull/1/changes

Anyone had luck doing "Computer Use" with the CUA Driver?

I tried it a couple months ago and it kinda worked, but it was pretty slow and janky. Didn't feel ready for primetime.

https://github.com/trycua/cua

I haven't tried Codex's "Computer Use" yet.

Does it work?

Satya Nadella putting words to the daily feeling I now have about my work:

I'm a tokenmaxxer too. It's addictive! [But] you have to step back when the novelty wears off to say, "What is it that I'm trying to create?"


Full interview: https://www.youtube.com/watch?v=zqEZyHkXgh0

I don't get memes but I see a resemblance here.

Wake up, babes. 😎

Cloudflare Images™ is old news, but still very good news.

Upload images to R2, then serve them through a dynamic CDN with custom sizes, file formats, face-centering, background removal, all kinds of crazy shit... just by changing query params on the image's URL.

Announcing Free Retro, a lightweight tool for running team retrospectives.

Retrospectives are a simple way for people working together to reflect on a recent project, event, or collaboration. They create space to talk about what went well, what did not go so well, and what could be improved the next time around.

Team retros encourage participation from everyone involved, not just the loudest voices in the room. Everyone gets a chance to add input before the group discusses it together.

Every retro gets a unique, unguessable URL that you can share with anyone. Free Retro is fun, multiplayer, hosted on Cloudflare, open source on GitHub, and free to use.

App: https://freeretro.ziki.workers.dev

Repo: https://github.com/zeke/freeretro


Announcing Free Retro, a lightweight tool for running team retrospectives.

Retrospectives are a simple way for people working together to reflect on a recent project, event, or collaboration. They create space to talk about what went well, what did not go so well, and what could be improved the next time around.

Team retros encourage participation from everyone involved, not just the loudest voices in the room. Everyone gets a chance to add input before the group discusses it together.

Every retro gets a unique, unguessable URL that you can share with anyone. Free Retro is fun, multiplayer, hosted on Cloudflare, open source on GitHub, and free to use.

App: https://freeretro.ziki.workers.dev

Repo: https://github.com/zeke/freeretro


Our process at GitHub was roughly this:

  1. Create a board.
  2. Invite teammates to join.
  3. Blur the cards.
  4. Cameras off. Take a few minutes to add cards.
  5. Cameras on. Reveal the cards.
  6. Group related cards by dragging and dropping.
  7. Emoji react to cards you wanna discuss.
  8. Sort by votes.
  9. Discuss!
  10. Take notes.

Our process at GitHub was roughly this:

  1. Create a board.
  2. Invite teammates to join.
  3. Blur the cards.
  4. Cameras off. Take a few minutes to add cards.
  5. Cameras on. Reveal the cards.
  6. Group related cards by dragging and dropping.
  7. Emoji react to cards you wanna discuss.
  8. Sort by votes.
  9. Discuss!
  10. Take notes.

Last week I became a MacOS developer.

This week I'm a 3D printmaker.

photo → OpenCode → OpenSCAD → physical object

More to come on this soon...

Can't stop watching this. Putting it in my library of OBS background loops as my alternate webcam output. https://x.com/cassidoo/status/2064037614210998487

Skills™ are great, but you can get a lot of mileage from a few precise edits to your global AGENTS.md file.

Here are my Cloudflare pointers that fill the knowledge cutoff gap and give my agents some context about my account setup:


Here's the full enchilada: https://github.com/zeke/agents.md/blob/main/AGENTS.md

TLDR on new Cloudflare AI Gateway stuff:

  • Spend limits: dollar budgets per model, provider, or team.
  • Dynamic routing: over budget falls back to a cheaper model.
  • Per-user/per-team budgets (closed beta).

https://blog.cloudflare.com/ai-gateway-spend-limits/

Wake up babe: VoidZero just joined Cloudflare https://x.com/voidzerodev/status/2062520542121304146


Full details on how I made this video here: https://github.com/zeke/voidzero

🍏New OpenCode School exercise: Build native MacOS apps.

https://opencode.school/exercises/build-native-mac-apps/

  1. Enroll for free. No signup.
  2. Learn the fundamentals of agent-driven development: models, prompting, skills, tools, etc.
  3. Do some exercises after you've learned the ropes.
  4. Build a freakin' Mac app!
  5. Rejoice, or profit. Whatever you're into.

You can build native MacOS apps. I believe in you.

Here's how:

  1. Install OpenCode, Claude Code, or Codex
  2. Install this skill: https://github.com/fayazara/macos-app-skills
  3. Go pick one of @fayazara's amazing open-source projects and fork it (or contribute improvements!): https://github.com/fayazara


I've also added a new exercise to OpenCode School for building native Mac apps.

Get started at https://opencode.school/exercises/build-native-mac-apps/