Feed

A consolidated stream of my writing and activity, powered by RSS/Atom.

RSS

Latest Items

  • My approach to global AI engineering hub via dotfiles
    Blog·

    I use several coding agents: Claude Code, Codex, Cursor, OpenCode... across personal and work laptops. The failure mode is familiar: each tool wants its own instruction file, the files drift, and a new machine means redoing the wiring. My fix was not to “sync ~/.claude through Dropbox/Drive”, but rather a small, curated hub in git, deployed with GNU Stow: Repo: benoror/dotfiles/stow/agents Published notes: notes.benoror.com/Agents/README Three layers Global personal defaults that travel with me: ~/.agents/AGENTS.md Project / Team: Committed repo AGENTS.md / CLAUDE.md (facts and conventions for that codebase). Local override: gitignored CLAUDE.local.md when I need private exceptions. Global stays lean. Project files own architecture. I do not force personal quirks into team repos. One Stow packageUnder stow/agents/, Stow installs the hub and tool entrypoints in one shot: ~/.agents/AGENTS.md + RESOLVER.md (canonical + discovery playbook) ~/.claude/CLAUDE.md → @~/.agents/AGENTS.md ~/.codex/AGENTS.md (and OpenCode / generic paths) → hub symlinks Bootstrap on a new machine: $ cd ~/dotfiles $ make agents-install $ make agents-verify No fan-out shell scripts. Stow owns the links; Make owns install / restow / verify. Details: stow/agents/README.md Cursor is the exception: global User Rules (and Settings Sync) matter more than a...

    Continue reading...
    Also shared to:Bluesky
  • 🎮 Resurrecting a ~25-year-old GBA project
    Bluesky·

    🎮 Resurrecting a ~25-year-old GBA project Around 2003 teenage me shipped the last version of a GBA Arkanoid clone called @rkanoid to PDRoms.de, back when "homebrew distribution" meant a faithful curator, a personal site, and a forum thread on gbadev.org. Then it sat dormant for ~25 years...

  • I just added an experimental chatbot to benoror.com 🤖
    Bluesky·

    I just added an experimental chatbot to benoror.com 🤖 Spent the weekend playing with Google’s Gemma 4 model to feel it in the wild. It’s rough and a bit weird. Try it out. If it says something unhinged… that’s on me 🙂

  • Been experimenting this weekend with agentic workflows on top of Obsidian vaults... it's addictive
    Bluesky·

    Been experimenting this weekend with agentic workflows on top of Obsidian vaults... it's addictive AI agents that handle meetings, transcripts, follow-ups, recaps, and commits -- all via slash commands, right inside your vault. Works with Cursor, Claude Code, OpenCode, etc...

  • Prompt Engineering Cheatsheet
    Obsidian Notes·

    About Some prompts snippets I have found useful and [mostly] effective through my agentic coding workflows.

    Also shared to:Bluesky
  • The Son of Man: An [incomplete] AI short story I wrote in 2004
    Blog·

    I recently rediscovered a short story in my old files archive that I wrote, though never finished, around 2004, when I was a high school teenager. It’s a story about the advent of artificial intelligence. Re-reading this text in 2026 feels oddly early, perhaps even a bit haunting. While I remain an AI optimist, I liked the fact that the story doesn't necessarily try to predict the future; instead, it tries to understand something more fundamental: the origins of intelligence. That focus seems to have aged better than other blunt technological prophecies of the time. By the early 2000s, my love for Sci-Fi was already cemented by the likes of Isaac Asimov and generational films like The Matrix and Minority Report. I hadn't yet discovered contemporary authors like Dan Simmons, Iain M. Banks, Liu Cixin, or especially qntm, whose short story Lena later captivated me with its documentary, technical style and quiet speculative weight. In a rather ironic twist, I decided to use modern LLMs to slightly rework the prose and flow style of this old draft. Specifically, I "qntm-fied" it to make the reading more pleasurable, keeping the ideas intact but stripping away the teenage flourishes for something more clinical and precise. I’m keeping the original version as-is for posterity. You can also see the versioned iterations by ChatGPT & Gemini. The following is the iteration I liked the most, one I surely hope to finish...

    Continue reading...
    Also shared to:Bluesky
  • The greatest pastel color scheme of all-time
    Blog·

    I craved pastel-based colorchemes for my Arch Linux TUIs before the likes of Catppuccin

    (the proof is in the pudding)

    old_battle_station

    In a recent spike of nostalgic-fueled excitement, I impulsively bought xoria256.com domain and planned for world domination afterwards. I still love Xoria256 but I am not that sure anymore.

  • Made AI-gen a Podcast a while ago
    Blog·

    Last year I was playing around with Google's NotebookLM and ended up creating a podcast episode by feeding it with Naval's content, pluse using other Gen AI tools for the assets (intro music, sfx, images...)

    Head over to /pop-podcast

  • Modularize a long/complex SQL query in Ruby
    Gists·
    def my_big_ish_report
    my_long_query = ```sql
    SELECT a,b,c FROM ... AS q_a
    JOIN (
    SELECT ... ' Sub-query 1
    WHERE client_id = 'foobar'
    ) sq_1 ON q_a.fkey_id = sq_1.id
    INNER JOIN (
    SELECT x,y,z FROM ... ' Sub-query 2
    JOIN (
    SELECT ... ' Sub-query 1 ' Sas as Sub-query 1 above ^
    WHERE client_id = 'foobar'
    )
    )
    ...etc...
    ```
    results = ActiveRecord::Execute::SQL(my_long_query)
    # ...
    ...
    Continue reading...
  • Export base meta data from Airtable
    Gists·
    const fda = ( fields ) => {
    let data = []
    for(const f of fields ){
    data.push(fd(f))
    }
    return data
    }
    const fd = ( field ) => {
    let data = {
    id: field.id, name: field.name, type: field.type, isComputed: field.isComputed, options:field.options, description: field.description
    }
    return data
    }
    let tables = []
    for (const table of base.tables ){
    let views = []
    ...
    Continue reading...

Generated at Aug 11, 2026, 6:38 AM

Try:""