What We Leave Behind

I asked ChatGPT to write a modern poem inspired by The Arrow and the Song by Henry Wadsworth Longfellow. Rather than simply updating the language, I wanted it to explore the same idea: that our words and actions can leave lasting effects, even when we never see where they lead.

This was the result:

What We Leave Behind (Poem)

I struck a match against the night,
Then left before the morning light.
I never saw which hearts grew warm,
Or which were scarred by sparks’ first form.

I cast a stone into the tide;
The ripples wandered far and wide.
Some reached a shore to shape the sand;
Some stole a castle, grain by grain.

The years returned what I had thrown—
Not every seed was kindness sown.
For every gift our hands impart,
May build—or break—another heart.

From that same idea, I then asked ChatGPT to turn the poem’s theme into song lyrics. I sent the finished lyrics to Suno, which generated the melody, vocals, and arrangement.

Here is the result. Enjoy!

What We Leave Behind (The Song)

Lyrics: ChatGPT
Music: Suno

Cover image for What We Leave Behind

What We Leave Behind

Verse 1

Every word’s a little spark,
Every step can light the dark.
Every silence, every sound,
Plants a seed beneath the ground.

Pre-Chorus

We never see how far they go,
The quiet things we’ll never know.

Chorus

‘Cause we’re all leaving footprints,
On roads we’ll never find.
Some will fade with morning rain,
Some will outlast time.
May the echoes carry kindness,
When our voices can’t be found.
We’re all leaving footprints,
In hearts we’ve never known.

Verse 2

Every door we choose to close,
Changes where another goes.
Hands can lift or let them fall;
Love is in the smallest call.

Pre-Chorus

We never know whose sky turns blue,
Because of something small we do.

Chorus

‘Cause we’re all leaving footprints,
On roads we’ll never find.
Some will fade with morning rain,
Some will outlast time.
May the echoes carry kindness,
When our voices can’t be found.
We’re all leaving footprints,
In hearts we’ve never known.

Bridge

If every stone can stir the sea,
If every flame can start a fire,
Then let my days, however small,
Leave more hope than they require.

No one owns tomorrow’s story;
We only write today’s.
So let my hands speak gently now,
Long after I’ve gone away.

Final Chorus

We’re all leaving footprints,
Whether we mean to or not.
Some become another’s shelter,
Some become their scars.
So may the echoes carry mercy,
Long beyond our names.
We’re all leaving footprints—
Choose them well today.

Footprints

I lit a lamp before the dawn,
Then walked away and carried on.
Who knows what traveller, cold and late,
Might find its glow and change their fate?

I spoke a hope I scarcely weighed,
Then watched it vanish as it strayed.
For words, once freed, refuse command;
They bloom in hearts we never planned.

Long years beyond what I could see,
A stranger came and smiled at me.
“You once gave light when mine was gone.”
The lamp burned out—its flame lived on.

Publishing and Consuming OData Endpoints in Business Central Online

When I first started integrating Microsoft Dynamics 365 Business Central with Excel, Power BI, and other tools, I was surprised by how little practical documentation there was on exposing existing pages as OData web services. Most articles focus on API pages or AL development, but if all you need is to expose a standard page like Vendor Ledger Entries or General Ledger Entries, the process is much simpler.

This guide walks through the complete process, along with a troubleshooting section covering an issue that took several hours to diagnose.

Continue reading Publishing and Consuming OData Endpoints in Business Central Online

Mimo 2.5 Didn’t Just Make Mistakes. It Changed How I Evaluate AI Models.

For the past few weeks, I’ve been building and experimenting with AI agents.

Not just chatbots, but agents that search the web, modify files, interact with Linux terminals, schedule cron jobs, orchestrate MCP tools, and automate real work.

Like many people, I initially evaluated models using the usual metrics:

  • Benchmark scores
  • Coding ability
  • Reasoning capability
  • Context window
  • Cost
  • Speed

Those metrics are useful.

But after spending enough time with autonomous agents, I’ve come to believe they don’t measure the thing I care about most.

Operational reliability. Continue reading Mimo 2.5 Didn’t Just Make Mistakes. It Changed How I Evaluate AI Models.

Why OpenCode Go Is Worth It — An Honest Take for Coders and Automators

I’ve been using OpenCode Go for about two weeks now, and it’s become my go-to for coding, AI agents, and automation. Here’s an honest take on whether it’s worth it.

What Is OpenCode Go?

A $5 first month, $10/month after subscription that gives you access to 13 top open coding models. No per-token charges — just a flat fee with usage limits.

Subscribe to OpenCode Go

The Models

  • DeepSeek — V4 Pro, V4 Flash
  • GLM — 5.2, 5.1
  • Kimi — K2.7 Code, K2.6
  • Qwen — 3.7 Max, 3.7 Plus, 3.6 Plus
  • MiniMax — M3, M2.7
  • MiMo — V2.5, V2.5 Pro (with vision!)
Continue reading Why OpenCode Go Is Worth It — An Honest Take for Coders and Automators

WordPress MCP Setup for Claude Code

The WordPress MCP Adapter plugin exposes a WordPress site as an MCP server. Combined with Automattic’s @automattic/mcp-wordpress-remote package, Claude Code can create and edit posts, manage pages, and interact with WordPress directly from a session.

Architecture

Claude Code
  └── stdio
      └── npx @automattic/mcp-wordpress-remote
              └── HTTPS (Application Password auth)
                      └── WordPress REST API (/wp-json/mcp/...)
                              └── MCP Adapter plugin
                                      └── WordPress Abilities API

Requirements

  • WordPress 6.9+
  • Node.js (installed via nvm)
  • MCP Adapter plugin activated on the WordPress site

Continue reading WordPress MCP Setup for Claude Code

Setting Up Mnemosyne Memory for Claude Code

Mnemosyne is a local-first AI memory system that integrates with Claude Code via MCP, giving Claude persistent memory across sessions.

Why MCP Instead of CLI

The CLI (mnemosyne store, mnemosyne recall) is a manual tool — you run it yourself and paste results back. The MCP integration makes Mnemosyne a first-class tool Claude can call directly, just like any other tool in a session.

Concretely, with MCP:

  • Claude automatically stores and retrieves memories during a conversation without any manual intervention
  • Memory reads and writes happen inline, so context is enriched transparently
  • No copy-pasting: Claude calls mnemosyne_remember or mnemosyne_recall the same way it calls any other tool

The CLI remains useful for inspection (mnemosyne stats), backup (mnemosyne export), and manual management — but it is not a substitute for the MCP integration when Claude is the one that needs to remember things.

Continue reading Setting Up Mnemosyne Memory for Claude Code

Connecting WordPress MCP via Tailscale

Most guides for connecting AI assistants to a self-hosted WordPress site via MCP suggest using Cloudflare Tunnel or ngrok to expose the site publicly. This works, but it also reintroduces infrastructure layers that can interfere with MCP: WAFs, bot-fight rules, page caches, and host-level rewrites that intercept REST API requests before WordPress ever handles them.

A cleaner alternative, if your machines are already on Tailscale: skip the public internet entirely.

Continue reading Connecting WordPress MCP via Tailscale

When Security Becomes Friction for Meralco Online

Meralco is a good example of a company overdoing online security in places where the actual risk is low.

Meralco is a utility company. It is not a bank, an e-wallet provider, or a financial institution holding customer funds. The information it needs to protect—customer name, service address, and billing amount—is important, but it does not carry the same risk profile as banking credentials or stored monetary value. The security approach should reflect that difference.

Continue reading When Security Becomes Friction for Meralco Online

n8n alternatives

I recently discovered that there are a few solid, self-hosted alternatives to n8n. Here’s a quick comparison of their GitHub stars and key features (as of Nov. 26, 2025):

Platform GitHub Stars Self-hosted Focus / Best Use Case
n8n 159k ✅ Yes General-purpose workflow automation with powerful code node. Ideal for complex multi-service automations and ETL tasks.
Activepieces 19.3k ✅ Yes Low-code/no-code automation with occasional custom JS support. Good for lighter, simpler workflows.
Windmill 15.2k ✅ Yes Developer-centric automation using scripts (Python/TypeScript/Go). Great for internal tools and backend workflows.
Automatisch 13.4k ✅ Yes Simplified Zapier-style automation. Best for small, straightforward tasks when ease and self-hosting matter.

Summary: n8n remains the most powerful and versatile, while Activepieces and Windmill offer lighter or more code-centric alternatives. Automatisch is best if you just need simple self-hosted automations.