<rss xmlns:source="http://source.scripting.com/" version="2.0">
  <channel>
    <title>Numeric Citizen I/O — A Blog About Blogging</title>
    <link>https://meta.numericcitizen.me/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Wed, 14 Jan 2026 06:43:12 -0500</lastBuildDate>
    <item>
      <title>My Micro.blog Timeline Summarization Workflow</title>
      <link>https://meta.numericcitizen.me/2026/01/14/my-microblog-timeline-summarization-workflow.html</link>
      <pubDate>Wed, 14 Jan 2026 06:43:12 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2026/01/14/my-microblog-timeline-summarization-workflow.html</guid>
      <description>&lt;p&gt;By popular request, here&amp;rsquo;s &lt;a href=&#34;https://crafted.numericcitizen.me/FtKlZVn3GnMjbs&#34;&gt;the documentation&lt;/a&gt; for my n8n workflow. This documentation was created with Claude AI using Claude Skills and was slightly tweaked to remove any sensitive data. The diagram was manually added.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2026/rssfeedtrigger.png&#34; width=&#34;600&#34; height=&#34;256&#34; alt=&#34;&#34;&gt;
</description>
      <source:markdown>By popular request, here&#39;s [the documentation](https://crafted.numericcitizen.me/FtKlZVn3GnMjbs) for my n8n workflow. This documentation was created with Claude AI using Claude Skills and was slightly tweaked to remove any sensitive data. The diagram was manually added.

&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2026/rssfeedtrigger.png&#34; width=&#34;600&#34; height=&#34;256&#34; alt=&#34;&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title>What Happened in Recent Days - A LOT</title>
      <link>https://meta.numericcitizen.me/2026/01/04/what-happened-in-recent-days.html</link>
      <pubDate>Sun, 04 Jan 2026 21:33:48 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2026/01/04/what-happened-in-recent-days.html</guid>
      <description>&lt;p&gt;Over the past few weeks, I&amp;rsquo;ve been on an intensive learning journey exploring automation, cloud deployment, and AI integration. I&amp;rsquo;ve been hands-on, building real workflows and connecting actual services. Here&amp;rsquo;s what I discovered along the way.&lt;/p&gt;
&lt;h2 id=&#34;getting-started-with-automation&#34;&gt;Getting Started with Automation&lt;/h2&gt;
&lt;p&gt;The foundation of this exploration was deploying n8n as a self-hosted instance on a cloud provider. This wasn&amp;rsquo;t just about clicking a button—it required understanding infrastructure, configuration, and the basics of running a service in the cloud. Once that was in place, I could start building workflows.&lt;/p&gt;
&lt;p&gt;Building basic workflows in n8n taught me what it actually means to create a functional automation. It&amp;rsquo;s not enough to have a good idea; you need to understand how data flows through your workflow, how triggers initiate actions, how conditions branch logic, and how errors are handled. Meeting all the requirements for a working workflow meant learning to think systematically about each step and its dependencies.&lt;/p&gt;
&lt;h2 id=&#34;accelerating-learning-with-ai&#34;&gt;Accelerating Learning with AI&lt;/h2&gt;
&lt;p&gt;One of the biggest breakthroughs was leveraging Claude AI to accelerate my learning across different subject matters. Rather than struggling through documentation alone or spending hours debugging, I could ask targeted questions and get explanations tailored to my specific use cases. This fundamentally changed how quickly I could iterate and experiment.&lt;/p&gt;
&lt;p&gt;Claude became my learning partner—helping me understand concepts, troubleshoot issues, and even write code. This wasn&amp;rsquo;t just about saving time; it was about compressing what might have taken weeks of traditional learning into days of focused experimentation.&lt;/p&gt;
&lt;h2 id=&#34;building-and-connecting&#34;&gt;Building and Connecting&lt;/h2&gt;
&lt;p&gt;From there, I expanded into multiple directions simultaneously. I deployed Next.js apps on Vercel using Claude Code, which gave me a way to build custom web interfaces quickly. I integrated GitHub for continuous delivery, automating the process of pushing code changes to live services like Scribbles and Micro.blog.&lt;/p&gt;
&lt;p&gt;But the real power came from connecting external services directly into n8n workflows. I learned to interact with Telegram, Discord, Micro.blog, and Tinylytics through their APIs, webhooks, and HTTP requests. Each integration taught me something different about how modern services communicate with each other. Some services have well-documented APIs; others require reverse-engineering their webhook payloads. Some are straightforward; others have quirks you only discover through experimentation.&lt;/p&gt;
&lt;h2 id=&#34;the-deeper-challenges&#34;&gt;The Deeper Challenges&lt;/h2&gt;
&lt;p&gt;The more complex problems emerged when I tackled data persistence and LLM integration within n8n. Adding state management to automation workflows isn&amp;rsquo;t trivial—you need to decide where to store data, how to retrieve it, and how to keep it synchronized across multiple workflow runs. It&amp;rsquo;s one thing to run a workflow once; it&amp;rsquo;s another to run it reliably over time while maintaining context and history.&lt;/p&gt;
&lt;p&gt;Incorporating AI services—whether through pay-per-use models like Claude or subscription-based services—required careful consideration. I had to think about cost implications, rate limits, and how to structure requests efficiently. Suddenly, every API call had a price tag, and I became much more conscious of resource consumption.&lt;/p&gt;
&lt;h2 id=&#34;key-insights&#34;&gt;Key Insights&lt;/h2&gt;
&lt;p&gt;What stands out most is a clearer understanding of tool selection. Each platform has its place, and knowing when to use n8n versus a custom Next.js app versus a direct API call makes all the difference. Sometimes the right answer is a simple webhook; sometimes you need the flexibility of a full application. This contextual thinking has become invaluable.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also learned to transpose ideas into concrete use cases, leveraging service APIs from Scribbles, Tinylytics, and Micro.blog in ways I hadn&amp;rsquo;t considered before. What started as &amp;ldquo;I wonder if I can connect these services&amp;rdquo; became &amp;ldquo;Here&amp;rsquo;s a specific workflow that solves a real problem.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve discovered how to make the most of services I was already depending on—Micro.blog and Inoreader—by understanding their capabilities more deeply. These tools had features and integrations I&amp;rsquo;d overlooked, and now I&amp;rsquo;m using them in ways that actually enhance my workflow.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also expanded my toolkit with utilities like VS Code, GitHub, and Postman, each playing a crucial role in different parts of the workflow. VS Code became my development environment, GitHub my version control and deployment trigger, and Postman my tool for testing and understanding APIs before integrating them into n8n.&lt;/p&gt;
&lt;h2 id=&#34;the-bigger-picture&#34;&gt;The Bigger Picture&lt;/h2&gt;
&lt;p&gt;The journey has been about understanding not just individual tools, but how they fit together in a larger ecosystem. It&amp;rsquo;s about recognizing that modern development isn&amp;rsquo;t about mastering one tool—it&amp;rsquo;s about understanding how to orchestrate multiple tools to solve real problems. And it&amp;rsquo;s about using AI not as a replacement for learning, but as an accelerant that lets you learn faster and go deeper.&lt;/p&gt;
</description>
      <source:markdown>Over the past few weeks, I&#39;ve been on an intensive learning journey exploring automation, cloud deployment, and AI integration. I&#39;ve been hands-on, building real workflows and connecting actual services. Here&#39;s what I discovered along the way.

## Getting Started with Automation

The foundation of this exploration was deploying n8n as a self-hosted instance on a cloud provider. This wasn&#39;t just about clicking a button—it required understanding infrastructure, configuration, and the basics of running a service in the cloud. Once that was in place, I could start building workflows.

Building basic workflows in n8n taught me what it actually means to create a functional automation. It&#39;s not enough to have a good idea; you need to understand how data flows through your workflow, how triggers initiate actions, how conditions branch logic, and how errors are handled. Meeting all the requirements for a working workflow meant learning to think systematically about each step and its dependencies.

## Accelerating Learning with AI

One of the biggest breakthroughs was leveraging Claude AI to accelerate my learning across different subject matters. Rather than struggling through documentation alone or spending hours debugging, I could ask targeted questions and get explanations tailored to my specific use cases. This fundamentally changed how quickly I could iterate and experiment.

Claude became my learning partner—helping me understand concepts, troubleshoot issues, and even write code. This wasn&#39;t just about saving time; it was about compressing what might have taken weeks of traditional learning into days of focused experimentation.

## Building and Connecting

From there, I expanded into multiple directions simultaneously. I deployed Next.js apps on Vercel using Claude Code, which gave me a way to build custom web interfaces quickly. I integrated GitHub for continuous delivery, automating the process of pushing code changes to live services like Scribbles and Micro.blog.

But the real power came from connecting external services directly into n8n workflows. I learned to interact with Telegram, Discord, Micro.blog, and Tinylytics through their APIs, webhooks, and HTTP requests. Each integration taught me something different about how modern services communicate with each other. Some services have well-documented APIs; others require reverse-engineering their webhook payloads. Some are straightforward; others have quirks you only discover through experimentation.

## The Deeper Challenges

The more complex problems emerged when I tackled data persistence and LLM integration within n8n. Adding state management to automation workflows isn&#39;t trivial—you need to decide where to store data, how to retrieve it, and how to keep it synchronized across multiple workflow runs. It&#39;s one thing to run a workflow once; it&#39;s another to run it reliably over time while maintaining context and history.

Incorporating AI services—whether through pay-per-use models like Claude or subscription-based services—required careful consideration. I had to think about cost implications, rate limits, and how to structure requests efficiently. Suddenly, every API call had a price tag, and I became much more conscious of resource consumption.

## Key Insights

What stands out most is a clearer understanding of tool selection. Each platform has its place, and knowing when to use n8n versus a custom Next.js app versus a direct API call makes all the difference. Sometimes the right answer is a simple webhook; sometimes you need the flexibility of a full application. This contextual thinking has become invaluable.

I&#39;ve also learned to transpose ideas into concrete use cases, leveraging service APIs from Scribbles, Tinylytics, and Micro.blog in ways I hadn&#39;t considered before. What started as &#34;I wonder if I can connect these services&#34; became &#34;Here&#39;s a specific workflow that solves a real problem.&#34;

I&#39;ve discovered how to make the most of services I was already depending on—Micro.blog and Inoreader—by understanding their capabilities more deeply. These tools had features and integrations I&#39;d overlooked, and now I&#39;m using them in ways that actually enhance my workflow.

I&#39;ve also expanded my toolkit with utilities like VS Code, GitHub, and Postman, each playing a crucial role in different parts of the workflow. VS Code became my development environment, GitHub my version control and deployment trigger, and Postman my tool for testing and understanding APIs before integrating them into n8n.

## The Bigger Picture

The journey has been about understanding not just individual tools, but how they fit together in a larger ecosystem. It&#39;s about recognizing that modern development isn&#39;t about mastering one tool—it&#39;s about understanding how to orchestrate multiple tools to solve real problems. And it&#39;s about using AI not as a replacement for learning, but as an accelerant that lets you learn faster and go deeper.
</source:markdown>
    </item>
    
    <item>
      <title>Building an Automated Publishing Pipeline: From Craft to Ghost</title>
      <link>https://meta.numericcitizen.me/2026/01/02/building-an-automated-publishing-pipeline.html</link>
      <pubDate>Fri, 02 Jan 2026 16:57:27 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2026/01/02/building-an-automated-publishing-pipeline.html</guid>
      <description>&lt;p&gt;For months, I&amp;rsquo;ve been publishing my weekly newsletter, &lt;em&gt;The Ephemeral Scrapbook&lt;/em&gt;, using a manual process: write in Craft, export to Ulysses, copy to Ghost, reformat everything, add images, fix formatting issues, and finally publish. It worked, but it was tedious and time-consuming.&lt;/p&gt;
&lt;p&gt;Today, that process is fully automated. Here&amp;rsquo;s how Claude and I built it together.&lt;/p&gt;
&lt;h2 id=&#34;the-challenge&#34;&gt;The Challenge&lt;/h2&gt;
&lt;p&gt;My workflow had become a bottleneck:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Writing newsletters in Craft Docs (my preferred writing environment)&lt;/li&gt;
&lt;li&gt;Exporting to Ulysses as an intermediary step&lt;/li&gt;
&lt;li&gt;Manual copy/paste to Ghost (my publishing platform)&lt;/li&gt;
&lt;li&gt;Reformatting all the markdown and HTML&lt;/li&gt;
&lt;li&gt;Dealing with Craft-specific formatting that Ghost didn&amp;rsquo;t understand&lt;/li&gt;
&lt;li&gt;Adding metadata like excerpts and tags manually&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I wanted automation, but I also wanted to understand the infrastructure I was building. That&amp;rsquo;s where working with Claude became invaluable—not just executing commands, but learning and iterating together.&lt;/p&gt;
&lt;h2 id=&#34;the-solution-n8n-workflow-automation&#34;&gt;The Solution: n8n Workflow Automation&lt;/h2&gt;
&lt;p&gt;We decided to build an n8n workflow that would:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Search for a document in Craft by title&lt;/li&gt;
&lt;li&gt;Fetch all the content blocks&lt;/li&gt;
&lt;li&gt;Transform Craft&amp;rsquo;s markdown/blocks into clean HTML&lt;/li&gt;
&lt;li&gt;Publish to Ghost as a draft&lt;/li&gt;
&lt;li&gt;Return confirmation with the post URL&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Simple in concept, complex in execution.&lt;/p&gt;
&lt;h2 id=&#34;the-journey-key-milestones&#34;&gt;The Journey: Key Milestones&lt;/h2&gt;
&lt;h3 id=&#34;milestone-1-understanding-the-architecture&#34;&gt;Milestone 1: Understanding the Architecture&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Challenge&lt;/strong&gt;: Should we use multiple workflows or one unified workflow?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Decision&lt;/strong&gt;: One end-to-end workflow that handles everything from search to publish.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learning&lt;/strong&gt;: Simplicity wins. Rather than orchestrating multiple workflows, we built one cohesive pipeline that&amp;rsquo;s easier to debug and maintain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Workflow nodes&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Webhook (trigger)&lt;/li&gt;
&lt;li&gt;HTTP Request (search Craft)&lt;/li&gt;
&lt;li&gt;HTTP Request (fetch document)&lt;/li&gt;
&lt;li&gt;Code (transform to HTML)&lt;/li&gt;
&lt;li&gt;HTTP Request (publish to Ghost)&lt;/li&gt;
&lt;li&gt;Respond to Webhook&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;the-iterative-building-process&#34;&gt;The Iterative Building Process&lt;/h3&gt;
&lt;p&gt;One of the most important decisions we made was to &lt;strong&gt;build and test incrementally&lt;/strong&gt;. Rather than assembling the entire workflow at once and hoping it would work, we added one node at a time, testing after each addition.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Testing Cadence&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Add Webhook → Test&lt;/strong&gt;: Confirmed the webhook received the query parameter correctly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add Search Node → Test&lt;/strong&gt;: Verified we could find the document and get the correct document ID&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add Fetch Node → Test&lt;/strong&gt;: Checked that we retrieved all 54 blocks of content with the proper nested structure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add Code Node → Test&lt;/strong&gt;: Validated the HTML transformation, checking for clean output without Craft tags&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add Ghost Publish Node → Test&lt;/strong&gt;: Ensured the post was created as a draft with all content intact&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add Response Node → Test&lt;/strong&gt;: Confirmed the workflow returned post details back to Claude&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Why This Mattered&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Each test revealed issues that would have been much harder to debug in a complete workflow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The search node helped us understand Craft returns multiple matches (we needed the first result)&lt;/li&gt;
&lt;li&gt;The fetch node showed us the nested structure (parent document → edition page → content blocks)&lt;/li&gt;
&lt;li&gt;The code node iterations caught formatting issues (&lt;code&gt;&amp;lt;callout&amp;gt;&lt;/code&gt; tags, &lt;code&gt;##&lt;/code&gt; symbols, &lt;code&gt;&amp;lt;highlight&amp;gt;&lt;/code&gt; tags)&lt;/li&gt;
&lt;li&gt;The Ghost publish node revealed we needed the &lt;code&gt;?source=html&lt;/code&gt; query parameter&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By testing at each step, we could pinpoint exactly where problems occurred. When something didn&amp;rsquo;t work, we knew it was the node we just added, not some mysterious interaction between distant parts of the workflow.&lt;/p&gt;
&lt;p&gt;This incremental approach turned what could have been hours of debugging into a smooth building process. Each successful test gave us confidence to move forward, and each failure was easy to isolate and fix.&lt;/p&gt;
&lt;h3 id=&#34;milestone-2-building-the-html-transformer&#34;&gt;Milestone 2: Building the HTML Transformer&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Challenge&lt;/strong&gt;: Craft uses its own markdown dialect with special tags like &lt;code&gt;&amp;lt;callout&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;highlight color=&amp;quot;blue&amp;quot;&amp;gt;&lt;/code&gt;, and markdown headers in text blocks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What we built&lt;/strong&gt;: A comprehensive JavaScript transformation engine that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Removes Craft-specific tags (&lt;code&gt;&amp;lt;callout&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;highlight&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Converts markdown formatting (bold, italic, links, code)&lt;/li&gt;
&lt;li&gt;Processes different block types (text, headers, quotes, code, images, videos)&lt;/li&gt;
&lt;li&gt;Handles rich URL blocks (YouTube embeds)&lt;/li&gt;
&lt;li&gt;Preserves anchor links for internal navigation&lt;/li&gt;
&lt;li&gt;Generates proper HTML for Ghost&amp;rsquo;s Lexical editor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Key functions&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;markdownToHtml()&lt;/code&gt; - Converts inline markdown to HTML&lt;/li&gt;
&lt;li&gt;&lt;code&gt;processBlock()&lt;/code&gt; - Handles each block type (text, image, richUrl, code, line, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;milestone-3-testing-and-validation&#34;&gt;Milestone 3: Testing and Validation&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;The Process&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Test with real content (Edition 2025-52 with 54 blocks)&lt;/li&gt;
&lt;li&gt;Verify HTML output in Ghost&amp;rsquo;s editor&lt;/li&gt;
&lt;li&gt;Check for Craft formatting artifacts&lt;/li&gt;
&lt;li&gt;Confirm all sections, videos, quotes, and images are preserved&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Quality Checks&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ No &lt;code&gt;&amp;lt;callout&amp;gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;✅ No &lt;code&gt;&amp;lt;highlight&amp;gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;✅ No &lt;code&gt;##&lt;/code&gt; symbols in headers&lt;/li&gt;
&lt;li&gt;✅ All YouTube videos embedded correctly&lt;/li&gt;
&lt;li&gt;✅ Blockquotes formatted properly&lt;/li&gt;
&lt;li&gt;✅ Images included&lt;/li&gt;
&lt;li&gt;✅ 9-minute reading time (17,000+ characters)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-final-workflow&#34;&gt;The Final Workflow&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt;: &lt;code&gt;{&amp;quot;query&amp;quot;: &amp;quot;The Ephemeral Scrapbook — Edition 2025-52&amp;quot;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;: Draft post in Ghost with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Complete HTML content&lt;/li&gt;
&lt;li&gt;All formatting preserved&lt;/li&gt;
&lt;li&gt;Clean structure&lt;/li&gt;
&lt;li&gt;Ready for manual review (add images, tags, excerpt)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Execution time&lt;/strong&gt;: ~3-4 seconds total&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search: 1-2 seconds&lt;/li&gt;
&lt;li&gt;Fetch: 1-2 seconds&lt;/li&gt;
&lt;li&gt;Transform: 36-84ms&lt;/li&gt;
&lt;li&gt;Publish: 600-900ms&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-tools&#34;&gt;The Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Craft&lt;/strong&gt;: My writing environment with a powerful API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ghost&lt;/strong&gt;: My publishing platform with a robust Admin API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;n8n&lt;/strong&gt;: Workflow automation platform (self-hosted on DigitalOcean)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude AI&lt;/strong&gt;: My pair-programming partner via MCP (Model Context Protocol)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-result&#34;&gt;The Result&lt;/h2&gt;
&lt;p&gt;The workflow is production-ready. My publishing workflow went from 20+ minutes of manual work through Craft, Ulysses, and Ghost to a single command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Claude, publish Edition 2026-01 to Ghost&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And it just works. 🎉&lt;/p&gt;
</description>
      <source:markdown>For months, I&#39;ve been publishing my weekly newsletter, *The Ephemeral Scrapbook*, using a manual process: write in Craft, export to Ulysses, copy to Ghost, reformat everything, add images, fix formatting issues, and finally publish. It worked, but it was tedious and time-consuming.

Today, that process is fully automated. Here&#39;s how Claude and I built it together.

## The Challenge

My workflow had become a bottleneck:
- Writing newsletters in Craft Docs (my preferred writing environment)
- Exporting to Ulysses as an intermediary step
- Manual copy/paste to Ghost (my publishing platform)
- Reformatting all the markdown and HTML
- Dealing with Craft-specific formatting that Ghost didn&#39;t understand
- Adding metadata like excerpts and tags manually

I wanted automation, but I also wanted to understand the infrastructure I was building. That&#39;s where working with Claude became invaluable—not just executing commands, but learning and iterating together.

## The Solution: n8n Workflow Automation

We decided to build an n8n workflow that would:
1. Search for a document in Craft by title
2. Fetch all the content blocks
3. Transform Craft&#39;s markdown/blocks into clean HTML
4. Publish to Ghost as a draft
5. Return confirmation with the post URL

Simple in concept, complex in execution.

## The Journey: Key Milestones

### Milestone 1: Understanding the Architecture

**Challenge**: Should we use multiple workflows or one unified workflow?

**Decision**: One end-to-end workflow that handles everything from search to publish.

**Learning**: Simplicity wins. Rather than orchestrating multiple workflows, we built one cohesive pipeline that&#39;s easier to debug and maintain.

**Workflow nodes**:
- Webhook (trigger)
- HTTP Request (search Craft)
- HTTP Request (fetch document)
- Code (transform to HTML)
- HTTP Request (publish to Ghost)
- Respond to Webhook

### The Iterative Building Process

One of the most important decisions we made was to **build and test incrementally**. Rather than assembling the entire workflow at once and hoping it would work, we added one node at a time, testing after each addition.

**The Testing Cadence**:

1. **Add Webhook → Test**: Confirmed the webhook received the query parameter correctly
2. **Add Search Node → Test**: Verified we could find the document and get the correct document ID
3. **Add Fetch Node → Test**: Checked that we retrieved all 54 blocks of content with the proper nested structure
4. **Add Code Node → Test**: Validated the HTML transformation, checking for clean output without Craft tags
5. **Add Ghost Publish Node → Test**: Ensured the post was created as a draft with all content intact
6. **Add Response Node → Test**: Confirmed the workflow returned post details back to Claude

**Why This Mattered**:

Each test revealed issues that would have been much harder to debug in a complete workflow:
- The search node helped us understand Craft returns multiple matches (we needed the first result)
- The fetch node showed us the nested structure (parent document → edition page → content blocks)
- The code node iterations caught formatting issues (`&lt;callout&gt;` tags, `##` symbols, `&lt;highlight&gt;` tags)
- The Ghost publish node revealed we needed the `?source=html` query parameter

By testing at each step, we could pinpoint exactly where problems occurred. When something didn&#39;t work, we knew it was the node we just added, not some mysterious interaction between distant parts of the workflow.

This incremental approach turned what could have been hours of debugging into a smooth building process. Each successful test gave us confidence to move forward, and each failure was easy to isolate and fix.

### Milestone 2: Building the HTML Transformer

**Challenge**: Craft uses its own markdown dialect with special tags like `&lt;callout&gt;`, `&lt;highlight color=&#34;blue&#34;&gt;`, and markdown headers in text blocks.

**What we built**: A comprehensive JavaScript transformation engine that:
- Removes Craft-specific tags (`&lt;callout&gt;`, `&lt;highlight&gt;`)
- Converts markdown formatting (bold, italic, links, code)
- Processes different block types (text, headers, quotes, code, images, videos)
- Handles rich URL blocks (YouTube embeds)
- Preserves anchor links for internal navigation
- Generates proper HTML for Ghost&#39;s Lexical editor

**Key functions**:
- `markdownToHtml()` - Converts inline markdown to HTML
- `processBlock()` - Handles each block type (text, image, richUrl, code, line, etc.)

### Milestone 3: Testing and Validation

**The Process**:
- Test with real content (Edition 2025-52 with 54 blocks)
- Verify HTML output in Ghost&#39;s editor
- Check for Craft formatting artifacts
- Confirm all sections, videos, quotes, and images are preserved

**Quality Checks**:
- ✅ No `&lt;callout&gt;` tags
- ✅ No `&lt;highlight&gt;` tags  
- ✅ No `##` symbols in headers
- ✅ All YouTube videos embedded correctly
- ✅ Blockquotes formatted properly
- ✅ Images included
- ✅ 9-minute reading time (17,000+ characters)

## The Final Workflow

**Input**: `{&#34;query&#34;: &#34;The Ephemeral Scrapbook — Edition 2025-52&#34;}`

**Output**: Draft post in Ghost with:
- Complete HTML content
- All formatting preserved
- Clean structure
- Ready for manual review (add images, tags, excerpt)

**Execution time**: ~3-4 seconds total
- Search: 1-2 seconds
- Fetch: 1-2 seconds  
- Transform: 36-84ms
- Publish: 600-900ms

## The Tools

- **Craft**: My writing environment with a powerful API
- **Ghost**: My publishing platform with a robust Admin API
- **n8n**: Workflow automation platform (self-hosted on DigitalOcean)
- **Claude AI**: My pair-programming partner via MCP (Model Context Protocol)

## The Result

The workflow is production-ready. My publishing workflow went from 20+ minutes of manual work through Craft, Ulysses, and Ghost to a single command:

&gt; &#34;Claude, publish Edition 2026-01 to Ghost&#34;

And it just works. 🎉
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://meta.numericcitizen.me/2025/12/29/heres-a-quick-demonstration-of.html</link>
      <pubDate>Mon, 29 Dec 2025 16:38:22 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/12/29/heres-a-quick-demonstration-of.html</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a quick demonstration of &lt;strong&gt;the Microblog Poster web app&lt;/strong&gt; I mentioned in my previous blog post.&lt;/p&gt;
&lt;p&gt;&lt;video controls=&#34;controls&#34; playsinline=&#34;playsinline&#34; preload=&#34;none&#34; width=&#34;1460&#34; height=&#34;1440&#34; poster=&#34;https://cdn.uploads.micro.blog/143495/2025/frames/1647718-0-95bfb6.jpg&#34; src=&#34;https://cdn.uploads.micro.mov/143495/2025/cleanshot-microblog-poster2025-12-2916.31.08/playlist.m3u8&#34;&gt;&lt;/video&gt;&lt;/p&gt;
</description>
      <source:markdown>Here&#39;s a quick demonstration of **the Microblog Poster web app** I mentioned in my previous blog post.


&lt;video controls=&#34;controls&#34; playsinline=&#34;playsinline&#34; preload=&#34;none&#34; width=&#34;1460&#34; height=&#34;1440&#34; poster=&#34;https://cdn.uploads.micro.blog/143495/2025/frames/1647718-0-95bfb6.jpg&#34; src=&#34;https://cdn.uploads.micro.mov/143495/2025/cleanshot-microblog-poster2025-12-2916.31.08/playlist.m3u8&#34;&gt;&lt;/video&gt;
</source:markdown>
    </item>
    
    <item>
      <title>Why I Built a Micro.blog Front End?</title>
      <link>https://meta.numericcitizen.me/2025/12/28/why-i-built-a-microblog.html</link>
      <pubDate>Sun, 28 Dec 2025 21:36:28 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/12/28/why-i-built-a-microblog.html</guid>
      <description>&lt;p&gt;As &lt;a href=&#34;https://blog.numericcitizen.me/2025/12/28/and-now-microblog-poster-web.html&#34;&gt;recently shared on my blog&lt;/a&gt;, I have finished (or mostly finished&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;) building a simple front end for Micro.blog. This front end, as depicted in the following screenshot, presents the user with a straightforward UI: a title field, a body field, blog post categories, and a Publish button—very focused, with no distractions. It works on desktops and mobile devices. I even added PWA support. But why did I build this?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.numericcitizen.me/uploads/2025/cleanshot-microblog-poster2025-12-2820.08.362x.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;First, I wanted to dip my toes into &lt;a href=&#34;https://vercel.com&#34;&gt;Vercel&lt;/a&gt;. I’ve recently stumbled upon many posts about web apps built and deployed on Vercel by people claiming no programming experience. Most people were using Claude AI or Claude Code to describe their app and deploy it to Vercel. Some apps were impressively designed and functional. Yet, I thought it wasn’t that easy and required a lot of technical knowledge. I was intrigued. I was “mostly” wrong.&lt;/p&gt;
&lt;p&gt;I’ve been using Claude AI since mid-December, in conversational mode, for different tasks, including getting explanations on building apps on Vercel and other platforms. I’ve been looking for small project ideas since then. Building a simple front-end to Micro.blog quickly became the perfect test. Micro.blog offers a simple API for many things. Using Claude and the API documentation, I asked Claude AI whether it was possible to build a simple UI for posting on Micro.blog. Sure enough, it was. My initial prompt describing the envisioned app follows:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Let’s build a web app hosted on Vercel that lets me to write blog posts for Micro.blog. The form will include only two text fields: a blog post title and the blog post text itself. Include a character count that will update as I type. Maximum of 5000 characters. The web page should include a title “Microblog Poster&amp;quot;, centered.&lt;/p&gt;
&lt;p&gt;Micro.blog supports Markdown, so the blog post text field should support it too.&lt;/p&gt;
&lt;p&gt;The authorization token should be stored in an environment variable named “microblog_token” which I will provide once the project is created on Vercel.&lt;/p&gt;
&lt;p&gt;I will use a GitHub repo, which should be named after the application name: “(redacted)” where the app will use the full URL: https://(redacted)&lt;/p&gt;
&lt;p&gt;Provided that Micro.blog supports draft posts as exposed in the Micro.blog APIs, a toggle named “Draft” should be on the web form and be off by default. When enabled, this means I can send the blog post to Micro.blog but with a draft status. Otherwise, the blog post is published.&lt;/p&gt;
&lt;p&gt;The initial state of the web app is to list all available blog post categories as a series of checkboxes, all off by default. You will need to retrieve possible blog post categories during the initialization phase. A blog post can have more than one category selected or none. This list of checkboxes should be left-aligned. The category list should be saved in the browser’s local storage and initialized on the first invocation of the web app.&lt;/p&gt;
&lt;p&gt;The form will contain a button “Publish” centered horizontally (like all the other UI elements, except the toggle underneath the Publish button which should be left aligned. Once clicked, if the post operation is successful, add a small banner (centered) telling me the operation was successful with an appropriate message.&lt;/p&gt;
&lt;p&gt;For a non-draft post, after hitting Publish, the form should display a clickable link to the blog post’s final URL. For the draft post, you should display the clickable link to the draft post instead.&lt;/p&gt;
&lt;p&gt;Images or any other attachments are not needed.&lt;/p&gt;
&lt;p&gt;You can look at micro.blog API documentation in the following URLs:&lt;/p&gt;
&lt;p&gt;For reading data from Micro.blog service: &lt;a href=&#34;https://help.micro.blog/t/json-api/97&#34;&gt;https://help.micro.blog/t/json-api/97&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For posting to Micro.blog service: &lt;a href=&#34;https://help.micro.blog/2017/api-posting/&#34;&gt;https://help.micro.blog/2017/api-posting/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After a few hiccups and errors, it eventually worked. I had to install GitHub Desktop on My Mac as well as Visual Source Code, but I eventually realized Claude AI wasn’t optimal. I ultimately switched to Claude Code to iterate on the initial release. My experience was so much smoother. I do experience so weird issues with GitHub, but it seems without impacts on the deployment.&lt;/p&gt;
&lt;p&gt;So, building the app requires a GitHub repository for holding the source code. Vercel connects to my GitHub repo, and as soon as a new commit is made, a new app deployment happens; It’s all automatic. One important thing to know: a project environment variable&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; to hold the Micro.blog app token is needed before trying the app for the first time.&lt;/p&gt;
&lt;p&gt;My first try mainly worked as expected. I made sure to have a draft mode available in the UI so that I don’t mess up my timeline with test posts. Once the app is deployed and available for use, any modifications are made through prompting Claude Code on my local machine. Code changes are pushed to GitHub on demand. It takes a few minutes for a new iteration to be available for testing.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, feel free to post them, and I’ll do my best to answer them to the best of my knowledge.&lt;/p&gt;
&lt;p&gt;One more thing: Vercel is free to use in my case because my app is relatively lightweight. Lastly, one benefit of building my app is that it will circumvent a design issue with Micro.blog’s post editor on the web: the title field and categories aren’t listed by default. I find this to be annoying. My app shows them. I’m happy with that.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Software is never finished!&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;It’s the most secure way to keep that token away from unauthorized eyes.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
      <source:markdown>As [recently shared on my blog](https://blog.numericcitizen.me/2025/12/28/and-now-microblog-poster-web.html), I have finished (or mostly finished[^1]) building a simple front end for Micro.blog. This front end, as depicted in the following screenshot, presents the user with a straightforward UI: a title field, a body field, blog post categories, and a Publish button—very focused, with no distractions. It works on desktops and mobile devices. I even added PWA support. But why did I build this?

![](https://blog.numericcitizen.me/uploads/2025/cleanshot-microblog-poster2025-12-2820.08.362x.png)

First, I wanted to dip my toes into [Vercel](https://vercel.com). I’ve recently stumbled upon many posts about web apps built and deployed on Vercel by people claiming no programming experience. Most people were using Claude AI or Claude Code to describe their app and deploy it to Vercel. Some apps were impressively designed and functional. Yet, I thought it wasn’t that easy and required a lot of technical knowledge. I was intrigued. I was “mostly” wrong. 

I’ve been using Claude AI since mid-December, in conversational mode, for different tasks, including getting explanations on building apps on Vercel and other platforms. I’ve been looking for small project ideas since then. Building a simple front-end to Micro.blog quickly became the perfect test. Micro.blog offers a simple API for many things. Using Claude and the API documentation, I asked Claude AI whether it was possible to build a simple UI for posting on Micro.blog. Sure enough, it was. My initial prompt describing the envisioned app follows:

&gt; Let’s build a web app hosted on Vercel that lets me to write blog posts for Micro.blog. The form will include only two text fields: a blog post title and the blog post text itself. Include a character count that will update as I type. Maximum of 5000 characters. The web page should include a title “Microblog Poster&#34;, centered. 
&gt; 
&gt; Micro.blog supports Markdown, so the blog post text field should support it too.
&gt; 
&gt; The authorization token should be stored in an environment variable named “microblog\_token” which I will provide once the project is created on Vercel.
&gt; 
&gt; I will use a GitHub repo, which should be named after the application name: “(redacted)” where the app will use the full URL: https://(redacted) 
&gt; 
&gt; Provided that Micro.blog supports draft posts as exposed in the Micro.blog APIs, a toggle named “Draft” should be on the web form and be off by default. When enabled, this means I can send the blog post to Micro.blog but with a draft status. Otherwise, the blog post is published.
&gt; 
&gt; The initial state of the web app is to list all available blog post categories as a series of checkboxes, all off by default. You will need to retrieve possible blog post categories during the initialization phase. A blog post can have more than one category selected or none. This list of checkboxes should be left-aligned. The category list should be saved in the browser’s local storage and initialized on the first invocation of the web app.
&gt; 
&gt; The form will contain a button “Publish” centered horizontally (like all the other UI elements, except the toggle underneath the Publish button which should be left aligned. Once clicked, if the post operation is successful, add a small banner (centered) telling me the operation was successful with an appropriate message. 
&gt; 
&gt; For a non-draft post, after hitting Publish, the form should display a clickable link to the blog post’s final URL. For the draft post, you should display the clickable link to the draft post instead.
&gt; 
&gt; Images or any other attachments are not needed. 
&gt; 
&gt; You can look at micro.blog API documentation in the following URLs: 
&gt; 
&gt; For reading data from Micro.blog service: [https://help.micro.blog/t/json-api/97](https://help.micro.blog/t/json-api/97)
&gt; 
&gt; For posting to Micro.blog service: [https://help.micro.blog/2017/api-posting/](https://help.micro.blog/2017/api-posting/)

After a few hiccups and errors, it eventually worked. I had to install GitHub Desktop on My Mac as well as Visual Source Code, but I eventually realized Claude AI wasn’t optimal. I ultimately switched to Claude Code to iterate on the initial release. My experience was so much smoother. I do experience so weird issues with GitHub, but it seems without impacts on the deployment. 

So, building the app requires a GitHub repository for holding the source code. Vercel connects to my GitHub repo, and as soon as a new commit is made, a new app deployment happens; It’s all automatic. One important thing to know: a project environment variable[^2] to hold the Micro.blog app token is needed before trying the app for the first time.

My first try mainly worked as expected. I made sure to have a draft mode available in the UI so that I don’t mess up my timeline with test posts. Once the app is deployed and available for use, any modifications are made through prompting Claude Code on my local machine. Code changes are pushed to GitHub on demand. It takes a few minutes for a new iteration to be available for testing.

If you have any questions or comments, feel free to post them, and I’ll do my best to answer them to the best of my knowledge. 

One more thing: Vercel is free to use in my case because my app is relatively lightweight. Lastly, one benefit of building my app is that it will circumvent a design issue with Micro.blog’s post editor on the web: the title field and categories aren’t listed by default. I find this to be annoying. My app shows them. I’m happy with that. 


[^1]:	Software is never finished!

[^2]:	It’s the most secure way to keep that token away from unauthorized eyes.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://meta.numericcitizen.me/2025/12/19/enabled-the-rss-feed-in.html</link>
      <pubDate>Fri, 19 Dec 2025 20:30:10 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/12/19/enabled-the-rss-feed-in.html</guid>
      <description>&lt;p&gt;Enabled the &lt;a href=&#34;https://whois.numericcitizen.me/news/feed.xml&#34;&gt;RSS feed&lt;/a&gt; in the News section of &amp;ldquo;&lt;a href=&#34;https://whois.numericcitizen.me&#34;&gt;Who is Numeric Citizen&lt;/a&gt;&amp;rdquo; website.&lt;/p&gt;
</description>
      <source:markdown>Enabled the [RSS feed](https://whois.numericcitizen.me/news/feed.xml) in the News section of &#34;[Who is Numeric Citizen](https://whois.numericcitizen.me)&#34; website. 
</source:markdown>
    </item>
    
    <item>
      <title>From My RSS Feeds To Day One</title>
      <link>https://meta.numericcitizen.me/2025/12/17/from-my-rss-feeds-to.html</link>
      <pubDate>Wed, 17 Dec 2025 07:26:53 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/12/17/from-my-rss-feeds-to.html</guid>
      <description>&lt;p&gt;Recent readings about &lt;strong&gt;n8n&lt;/strong&gt; and with the help of &lt;strong&gt;Claude AI&lt;/strong&gt;, I finally found a way to replace &lt;strong&gt;IFTTT&lt;/strong&gt; for archiving my RSS feeds content: it won&amp;rsquo;t be by using an n8n automation but a simple feature that was sitting right in front of my eyes on Micro.blog: cross-posting. The trick is simple: each of my RSS feed is added to the Sources panel in Micro.blog, from there, I configure cross-post the RSS feed article to other places like Day One journal using email-to-dayone. Voilà. I&amp;rsquo;ll be closing my IFTTT account later today after so many years of service. The only rather big downside: Micro.blog doesn&amp;rsquo;t copy images from the source into Day One while IFTTT could. 🫤&lt;/p&gt;
&lt;p&gt;Update #1: I submitted &lt;a href=&#34;https://help.micro.blog/t/add-photo-attachments-to-email-to-dayone/4136&#34;&gt;my issue on the Micro.blog help forum&lt;/a&gt;, and a few hours later, a fix was on the way. Thanks &lt;a href=&#34;https://micro.blog/manton&#34;&gt;@manton&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Update #2: And &lt;a href=&#34;https://news.micro.blog/2025/12/18/added-photos-to-day-one.html&#34;&gt;now it is available&lt;/a&gt;; photos are now supported, too! Thanks to Manton!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/-cleanshot-micro.blog-sources2025-12-1707.21.312x-optimised.png.png&#34;&gt;
</description>
      <source:markdown>Recent readings about **n8n** and with the help of **Claude AI**, I finally found a way to replace **IFTTT** for archiving my RSS feeds content: it won&#39;t be by using an n8n automation but a simple feature that was sitting right in front of my eyes on Micro.blog: cross-posting. The trick is simple: each of my RSS feed is added to the Sources panel in Micro.blog, from there, I configure cross-post the RSS feed article to other places like Day One journal using email-to-dayone. Voilà. I&#39;ll be closing my IFTTT account later today after so many years of service. The only rather big downside: Micro.blog doesn&#39;t copy images from the source into Day One while IFTTT could. 🫤

Update #1: I submitted [my issue on the Micro.blog help forum](https://help.micro.blog/t/add-photo-attachments-to-email-to-dayone/4136), and a few hours later, a fix was on the way. Thanks [@manton](https://micro.blog/manton)

Update #2: And [now it is available](https://news.micro.blog/2025/12/18/added-photos-to-day-one.html); photos are now supported, too! Thanks to Manton! 

&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/-cleanshot-micro.blog-sources2025-12-1707.21.312x-optimised.png.png&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title>Using AI For Writing is Lazy? Think Again</title>
      <link>https://meta.numericcitizen.me/2025/11/29/using-ai-for-writing-is.html</link>
      <pubDate>Sat, 29 Nov 2025 08:49:46 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/11/29/using-ai-for-writing-is.html</guid>
      <description>&lt;p&gt;Some believe that using AI for writing articles is lazy, not creative, and that you don’t earn the credit for doing it. I disagree. Or, it depends. Here’s a personal experiment.&lt;/p&gt;
&lt;p&gt;This week, I shared an article about digital sovereignty with my professional network on LinkedIn. Even if I used ChatGPT to write the article, I spent days on it, or, more specifically, I spent days creating and testing different prompts. The article was written in French, then later translated into English and shared on my blog (see “&lt;a href=&#34;https://numericcitizen.me/on-digital-sovereignty-and-strategic-realism/&#34;&gt;On Digital Sovereignty and Strategic Realism&lt;/a&gt;”).&lt;/p&gt;
&lt;p&gt;In this meta blog post, I want to share the final prompt that led to the article. Please note that the final response from ChatGPT was manually modified before being posted. Here’s the prompt below followed with some comments.&lt;/p&gt;
&lt;p&gt;I would like you to write an article of no more than 1500 words on the topic of digital sovereignty, a subject that is currently highly relevant both in Québec and around the world. This article will be read by information technology and cybersecurity professionals. It should offer a clear-eyed perspective on the issues and challenges related to the pursuit of digital sovereignty for organizations and governments. The article should not be alarmist, but realistic and critical, with the goal of prompting reflection among readers.&lt;/p&gt;
&lt;p&gt;Here is how the article should be structured: an introductory section that provides context, followed by a section explaining why digital sovereignty is essential but not a fully realistic target in absolute terms; we must remain pragmatic. Then, a section offering potential solutions or realistic strategies that large organizations should adopt, especially if they are critical to society.&lt;/p&gt;
&lt;p&gt;The article should conclude with open questions inviting readers to reflect and comment in order to spark a constructive conversation. Use the following elements to build the article. Reuse the provided links as references.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Over the past five years, a series of international, political, and technological events has forced us to examine the notion of digital sovereignty (a few examples: the rise of the GAFAM giants, the Snowden affair, the U.S. Patriot Act and Cloud Act, recent U.S. elections, mergers and acquisitions in the tech sector, etc.).&lt;/li&gt;
&lt;li&gt;What exactly is digital sovereignty? “Digital sovereignty refers to the ability of a state, an organization, or an individual to control and manage its data, digital infrastructures, and technologies in order to ensure its strategic autonomy and security in the digital space.”&lt;/li&gt;
&lt;li&gt;It is the ability to fully exercise one’s rights and choices in the digital domain without being subject to external constraints.&lt;/li&gt;
&lt;li&gt;Major outages from several cloud service providers have occurred, the most notable being:&lt;/li&gt;
&lt;li&gt;AWS (October 20, 2025: Revealing the Cascading Impacts of the AWS Outage – Ookla)&lt;/li&gt;
&lt;li&gt;A Microsoft Azure outage (October 29, 2025: Microsoft Azure Outage: How the World’s Second-Largest Cloud Platform Went Down – ThinkCloudly)&lt;/li&gt;
&lt;li&gt;And more recently, a Cloudflare outage (November 18, 2025: Cloudflare outage on November 18, 2025)&lt;/li&gt;
&lt;li&gt;Another outage occurred last year, on July 19, 2024, when a problematic update from CrowdStrike caused widespread service failures (2024 CrowdStrike-related IT outages – Wikipedia)&lt;/li&gt;
&lt;li&gt;These outages strongly remind us of our deep dependence on cloud services and technology in general, both personally and within organizations.&lt;/li&gt;
&lt;li&gt;We need to reflect and attempt to find viable answers and strategies to these questions: Are we well prepared? Do mitigation solutions exist? Is digital sovereignty only about data?&lt;/li&gt;
&lt;li&gt;Is digital sovereignty a mirage? Are we not always dependent on something beyond our control? We must keep in mind that:&lt;/li&gt;
&lt;li&gt;Complexity and cost: Developing sovereign solutions (cloud, software, artificial intelligence) requires massive investments.&lt;/li&gt;
&lt;li&gt;Global interdependence: Digital value chains are globalized, making total autonomy difficult, if not impossible.&lt;/li&gt;
&lt;li&gt;Risk of protectionism: Some fear that digital sovereignty could be used as a pretext for trade barriers.&lt;/li&gt;
&lt;li&gt;Clearly, digital sovereignty is not merely about using or not using cloud computing, or choosing which cloud to use; it is much broader than that.&lt;/li&gt;
&lt;li&gt;I really like this quote, and it must be integrated into the article: “Digital sovereignty is neither a luxury nor a technological gimmick. It is a pillar of resilience and democracy.” — Le Devoir: &lt;a href=&#34;https://www.ledevoir.com/opinion/chroniques/936699/parlons-souverainete&#34;&gt;https://www.ledevoir.com/opinion/chroniques/936699/parlons-souverainete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I believe we need to accept the fact that we will never have full control over our digital destiny. Therefore, we must adopt mitigation and exit strategies to reduce dependency links.&lt;/li&gt;
&lt;li&gt;We must maintain a message of independence toward major industry players so that they understand they are not alone, even if they are powerful. We need to be strategic, give ourselves the means to stay agile, and diversify.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, the prompt is nearly as long as the final product. It took me a dozen tries to see what ChatGPT could create. After each try, I would modify and add instructions to the prompt. Oh, and I searched for references myself. In short, this was a multi-day effort. Am I a lazy guy? You tell me.&lt;/p&gt;
</description>
      <source:markdown>Some believe that using AI for writing articles is lazy, not creative, and that you don’t earn the credit for doing it. I disagree. Or, it depends. Here’s a personal experiment. 

This week, I shared an article about digital sovereignty with my professional network on LinkedIn. Even if I used ChatGPT to write the article, I spent days on it, or, more specifically, I spent days creating and testing different prompts. The article was written in French, then later translated into English and shared on my blog (see “[On Digital Sovereignty and Strategic Realism](https://numericcitizen.me/on-digital-sovereignty-and-strategic-realism/)”).

In this meta blog post, I want to share the final prompt that led to the article. Please note that the final response from ChatGPT was manually modified before being posted. Here’s the prompt below followed with some comments.

I would like you to write an article of no more than 1500 words on the topic of digital sovereignty, a subject that is currently highly relevant both in Québec and around the world. This article will be read by information technology and cybersecurity professionals. It should offer a clear-eyed perspective on the issues and challenges related to the pursuit of digital sovereignty for organizations and governments. The article should not be alarmist, but realistic and critical, with the goal of prompting reflection among readers.

Here is how the article should be structured: an introductory section that provides context, followed by a section explaining why digital sovereignty is essential but not a fully realistic target in absolute terms; we must remain pragmatic. Then, a section offering potential solutions or realistic strategies that large organizations should adopt, especially if they are critical to society.

The article should conclude with open questions inviting readers to reflect and comment in order to spark a constructive conversation. Use the following elements to build the article. Reuse the provided links as references.

- Over the past five years, a series of international, political, and technological events has forced us to examine the notion of digital sovereignty (a few examples: the rise of the GAFAM giants, the Snowden affair, the U.S. Patriot Act and Cloud Act, recent U.S. elections, mergers and acquisitions in the tech sector, etc.).
- What exactly is digital sovereignty? “Digital sovereignty refers to the ability of a state, an organization, or an individual to control and manage its data, digital infrastructures, and technologies in order to ensure its strategic autonomy and security in the digital space.”
- It is the ability to fully exercise one’s rights and choices in the digital domain without being subject to external constraints.
- Major outages from several cloud service providers have occurred, the most notable being:
- AWS (October 20, 2025: Revealing the Cascading Impacts of the AWS Outage – Ookla)
- A Microsoft Azure outage (October 29, 2025: Microsoft Azure Outage: How the World’s Second-Largest Cloud Platform Went Down – ThinkCloudly)
- And more recently, a Cloudflare outage (November 18, 2025: Cloudflare outage on November 18, 2025)
- Another outage occurred last year, on July 19, 2024, when a problematic update from CrowdStrike caused widespread service failures (2024 CrowdStrike-related IT outages – Wikipedia)
- These outages strongly remind us of our deep dependence on cloud services and technology in general, both personally and within organizations.
- We need to reflect and attempt to find viable answers and strategies to these questions: Are we well prepared? Do mitigation solutions exist? Is digital sovereignty only about data?
- Is digital sovereignty a mirage? Are we not always dependent on something beyond our control? We must keep in mind that:
- Complexity and cost: Developing sovereign solutions (cloud, software, artificial intelligence) requires massive investments.
- Global interdependence: Digital value chains are globalized, making total autonomy difficult, if not impossible.
- Risk of protectionism: Some fear that digital sovereignty could be used as a pretext for trade barriers.
- Clearly, digital sovereignty is not merely about using or not using cloud computing, or choosing which cloud to use; it is much broader than that.
- I really like this quote, and it must be integrated into the article: “Digital sovereignty is neither a luxury nor a technological gimmick. It is a pillar of resilience and democracy.” — Le Devoir: [https://www.ledevoir.com/opinion/chroniques/936699/parlons-souverainete](https://www.ledevoir.com/opinion/chroniques/936699/parlons-souverainete)
- I believe we need to accept the fact that we will never have full control over our digital destiny. Therefore, we must adopt mitigation and exit strategies to reduce dependency links.
- We must maintain a message of independence toward major industry players so that they understand they are not alone, even if they are powerful. We need to be strategic, give ourselves the means to stay agile, and diversify.

As you can see, the prompt is nearly as long as the final product. It took me a dozen tries to see what ChatGPT could create. After each try, I would modify and add instructions to the prompt. Oh, and I searched for references myself. In short, this was a multi-day effort. Am I a lazy guy? You tell me. 

</source:markdown>
    </item>
    
    <item>
      <title>My Content Creation Ecosystem - Fall 2025 Update</title>
      <link>https://meta.numericcitizen.me/2025/11/02/my-content-creation-ecosystem-fall.html</link>
      <pubDate>Sun, 02 Nov 2025 08:28:27 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/11/02/my-content-creation-ecosystem-fall.html</guid>
      <description>&lt;p&gt;It has been a while since &lt;a href=&#34;https://meta.numericcitizen.me/2025/03/22/a-mandatory-update-to-my.html&#34;&gt;my last update&lt;/a&gt; in March 2025. Here&amp;rsquo;s a summary of the changes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I removed &lt;a href=&#34;https://www.brief.news/&#34;&gt;Brief.news&lt;/a&gt; because I no longer think it will replace Mailbrew.&lt;/li&gt;
&lt;li&gt;I removed Mailbrew because I no longer depend on it to consume Internet content. I tried to replace it with Inoreader email digests, but it didn&amp;rsquo;t work as &lt;a href=&#34;https://numericcitizen.me/inoreaders-new-email-digest-feature-promise-and-limitations/&#34;&gt;I wrote here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I decided to add ChatGPT Atlas because I now have a solid use case for it: articles summarization and analysis, as I explained in &lt;a href=&#34;https://youtu.be/cw0uF75Iv80&#34;&gt;this YouTube video&lt;/a&gt;. This means Perplexity didn&amp;rsquo;t stay from my previous update. I&amp;rsquo;m focusing and want to settle on OpenAI for the foreseeable future.&lt;/li&gt;
&lt;li&gt;My new personal landing page, which is mostly complete, has replaced the one previously hosted on Craft public documents.&lt;/li&gt;
&lt;li&gt;I also made several visual tweaks to make it cleaner and more visually appealing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The pace of updates slowed considerably in the last two years. It&amp;rsquo;s a good thing, and it means I can focus more on content and less on tooling.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/mycontentcreatorworkflowtools-2025-11.png&#34;&gt;
</description>
      <source:markdown>It has been a while since [my last update](https://meta.numericcitizen.me/2025/03/22/a-mandatory-update-to-my.html) in March 2025. Here&#39;s a summary of the changes.
* I removed [Brief.news](https://www.brief.news/) because I no longer think it will replace Mailbrew.
* I removed Mailbrew because I no longer depend on it to consume Internet content. I tried to replace it with Inoreader email digests, but it didn&#39;t work as [I wrote here](https://numericcitizen.me/inoreaders-new-email-digest-feature-promise-and-limitations/).
* I decided to add ChatGPT Atlas because I now have a solid use case for it: articles summarization and analysis, as I explained in [this YouTube video](https://youtu.be/cw0uF75Iv80). This means Perplexity didn&#39;t stay from my previous update. I&#39;m focusing and want to settle on OpenAI for the foreseeable future.
* My new personal landing page, which is mostly complete, has replaced the one previously hosted on Craft public documents.
* I also made several visual tweaks to make it cleaner and more visually appealing.

The pace of updates slowed considerably in the last two years. It&#39;s a good thing, and it means I can focus more on content and less on tooling.

&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/mycontentcreatorworkflowtools-2025-11.png&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://meta.numericcitizen.me/2025/10/16/as-a-craft-power-user.html</link>
      <pubDate>Thu, 16 Oct 2025 18:23:38 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/10/16/as-a-craft-power-user.html</guid>
      <description>&lt;p&gt;As a Craft power user, I still need Ulysses to complete my writing and publishing workflow. I made &lt;a href=&#34;https://youtu.be/cKYwzRXfdVU&#34;&gt;a video&lt;/a&gt; about this.&lt;/p&gt;

&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;https://www.youtube.com/embed/cKYwzRXfdVU&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; allowfullscreen title=&#34;YouTube Video&#34;&gt;&lt;/iframe&gt;
&lt;/div&gt;

</description>
      <source:markdown>As a Craft power user, I still need Ulysses to complete my writing and publishing workflow. I made [a video](https://youtu.be/cKYwzRXfdVU) about this.

{{&lt; youtube &#34;cKYwzRXfdVU&#34; &gt;}}
</source:markdown>
    </item>
    
    <item>
      <title>Screenflow &#43; Screen Studio</title>
      <link>https://meta.numericcitizen.me/2025/09/28/screenflow-screen-studio.html</link>
      <pubDate>Sun, 28 Sep 2025 20:27:14 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/09/28/screenflow-screen-studio.html</guid>
      <description>&lt;p&gt;This week, I decided to add &lt;strong&gt;Screen Studio&lt;/strong&gt; to my YouTube recording workflow. Screen Studio brings simplicity for recording more dynamic screen sequences. Everything Screen Studio does can be done in &lt;strong&gt;ScreenFlow&lt;/strong&gt;, but it requires significantly more manual work. But Screen Studio has a severe limitation: we cannot merge recorded sequences. That’s why I’m keeping ScreenFlow.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/cleanshot-project-02.-tags-and-the-need-for-rules2025-09-2820.54.382x.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;In summary, my workflow proceeds as follows: individual sequences are recorded in Screen Studio, exported as .mp4 files, and then imported into ScreenFlow to be assembled into a complete video sequence, which includes the intro and outro sequences with background music. Chapter markers are also added in ScreenFlow before final export. Finally, video subtitles are created using Whisper Transcription and exported as an .srt file, which is compatible with YouTube Studio.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/cleanshot-91.-using-tags-effectively-in-craft2025-09-2820.48.512x.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Overall, I do spend more time on video rendering, but I think it’s worth it. Lastly, disk space consumption is way higher than before, with 2x-3x more space consumed than with ScreenFlow alone. Ouch.&lt;/p&gt;
&lt;p&gt;One more thing: Screen Studio is the only app that makes the M4 Mac mini fan run at full speed. I wonder if Screen Studio uses Apple Metal technology?&lt;/p&gt;
</description>
      <source:markdown>This week, I decided to add **Screen Studio** to my YouTube recording workflow. Screen Studio brings simplicity for recording more dynamic screen sequences. Everything Screen Studio does can be done in **ScreenFlow**, but it requires significantly more manual work. But Screen Studio has a severe limitation: we cannot merge recorded sequences. That’s why I’m keeping ScreenFlow.

![](https://cdn.uploads.micro.blog/143495/2025/cleanshot-project-02.-tags-and-the-need-for-rules2025-09-2820.54.382x.png)

In summary, my workflow proceeds as follows: individual sequences are recorded in Screen Studio, exported as .mp4 files, and then imported into ScreenFlow to be assembled into a complete video sequence, which includes the intro and outro sequences with background music. Chapter markers are also added in ScreenFlow before final export. Finally, video subtitles are created using Whisper Transcription and exported as an .srt file, which is compatible with YouTube Studio.

![](https://cdn.uploads.micro.blog/143495/2025/cleanshot-91.-using-tags-effectively-in-craft2025-09-2820.48.512x.png)

Overall, I do spend more time on video rendering, but I think it’s worth it. Lastly, disk space consumption is way higher than before, with 2x-3x more space consumed than with ScreenFlow alone. Ouch. 

One more thing: Screen Studio is the only app that makes the M4 Mac mini fan run at full speed. I wonder if Screen Studio uses Apple Metal technology?

</source:markdown>
    </item>
    
    <item>
      <title>Behind the Scenes of the “On Apple Failures&#34; Writing Project</title>
      <link>https://meta.numericcitizen.me/2025/09/21/behind-the-scenes-of-the.html</link>
      <pubDate>Sun, 21 Sep 2025 19:22:50 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/09/21/behind-the-scenes-of-the.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve long wanted to write an article like &lt;a href=&#34;https://numericcitizen.me/on-apple-failures/&#34;&gt;this one&lt;/a&gt;. However, as Apple continued to add to its list of failures, poor Apple, I kept pushing back the deadline. This summer, however, the timing was right. Here’s what I did differently this time.&lt;/p&gt;
&lt;p&gt;A few months ago, I started gathering a list of Apple’s failures in a Craft document. I wanted to cover the period from when Tim Cook took over as Apple’s leader, following Steve Jobs’ passing, up until now. For each failure, I wrote a summary that included a description, some context, and a list of potential collateral damage to Apple’s reputation and brand. Then, I turned to ChatGPT for help.&lt;/p&gt;
&lt;p&gt;I set up a space to upload files, one for each failure, and began a separate &amp;ldquo;conversation&amp;rdquo; to explore areas I hadn&amp;rsquo;t already covered. This process took a few weeks. I&amp;rsquo;d revisit one of the failures every other day and continue the conversation until I was satisfied.&lt;/p&gt;
&lt;p&gt;Next, I started creating a first draft based on all the conversations in this ChatGPT writing project. It took many prompts to refine the base content before exporting it as a Markdown file. Then, I set up a new conversation, uploaded the file, and asked ChatGPT to continue working on the article, this time in canvas mode. It took many more iterations and manual edits to finish around 85% of the writing process.&lt;/p&gt;
&lt;p&gt;After that, I imported the text back into Craft and kept adding relevant facts and comments. As I went along, I started searching for photos that could illustrate each section. I used Kagi Search for all my image searches. For each photo, I wrote a brief caption that gave a unique perspective on the failure it was highlighting.&lt;/p&gt;
&lt;p&gt;It’s also worth noting the role of Grammarly. As I finished writing in Craft, I used Grammarly to rephrase parts I didn’t quite like. I ended up keeping around half of Grammarly&amp;rsquo;s suggested rephrases.&lt;/p&gt;
&lt;p&gt;In summary, generative AI was a significant contributor to my writing, either through the use of ChatGPT or with Grammarly’s constant supervision. I’m not sure how I should feel about this, nor how you should think about it, now that you know. Make no mistake, the original writing project idea is mine. The selection of Apple’s failures is mine. The starting point of research is mine. The selection of images is mine. Supervision of ChatGPT’s contribution is mine. But is the final product mine? Anyway, complete transparency, now you know.&lt;/p&gt;
</description>
      <source:markdown>I&#39;ve long wanted to write an article like [this one](https://numericcitizen.me/on-apple-failures/). However, as Apple continued to add to its list of failures, poor Apple, I kept pushing back the deadline. This summer, however, the timing was right. Here’s what I did differently this time.

A few months ago, I started gathering a list of Apple’s failures in a Craft document. I wanted to cover the period from when Tim Cook took over as Apple’s leader, following Steve Jobs’ passing, up until now. For each failure, I wrote a summary that included a description, some context, and a list of potential collateral damage to Apple’s reputation and brand. Then, I turned to ChatGPT for help.

I set up a space to upload files, one for each failure, and began a separate &#34;conversation&#34; to explore areas I hadn&#39;t already covered. This process took a few weeks. I&#39;d revisit one of the failures every other day and continue the conversation until I was satisfied. 

Next, I started creating a first draft based on all the conversations in this ChatGPT writing project. It took many prompts to refine the base content before exporting it as a Markdown file. Then, I set up a new conversation, uploaded the file, and asked ChatGPT to continue working on the article, this time in canvas mode. It took many more iterations and manual edits to finish around 85% of the writing process.

After that, I imported the text back into Craft and kept adding relevant facts and comments. As I went along, I started searching for photos that could illustrate each section. I used Kagi Search for all my image searches. For each photo, I wrote a brief caption that gave a unique perspective on the failure it was highlighting.

It’s also worth noting the role of Grammarly. As I finished writing in Craft, I used Grammarly to rephrase parts I didn’t quite like. I ended up keeping around half of Grammarly&#39;s suggested rephrases.

In summary, generative AI was a significant contributor to my writing, either through the use of ChatGPT or with Grammarly’s constant supervision. I’m not sure how I should feel about this, nor how you should think about it, now that you know. Make no mistake, the original writing project idea is mine. The selection of Apple’s failures is mine. The starting point of research is mine. The selection of images is mine. Supervision of ChatGPT’s contribution is mine. But is the final product mine? Anyway, complete transparency, now you know. 

</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://meta.numericcitizen.me/2025/08/17/i-have-always-been-torn.html</link>
      <pubDate>Sun, 17 Aug 2025 16:27:28 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/17/i-have-always-been-torn.html</guid>
      <description>&lt;p&gt;I have always been torn between creating text-only quotes and image-based quotes. Text-only quotes are easier to resurface and index, while image-based quotes are more visually appealing. You&amp;rsquo;re preference?&lt;/p&gt;
</description>
      <source:markdown>I have always been torn between creating text-only quotes and image-based quotes. Text-only quotes are easier to resurface and index, while image-based quotes are more visually appealing. You&#39;re preference? 
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://meta.numericcitizen.me/2025/08/17/i-made-a-little-update.html</link>
      <pubDate>Sun, 17 Aug 2025 12:42:53 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/17/i-made-a-little-update.html</guid>
      <description>&lt;p&gt;I made a little update to &lt;strong&gt;my reading workflow&lt;/strong&gt;, especially the part for newsletter. Look in the table &lt;a href=&#34;https://world.numericcitizen.io/my-micro-workflows-explained&#34;&gt;on this page&lt;/a&gt; and sort by date to locate the most recent update.&lt;/p&gt;
</description>
      <source:markdown>I made a little update to **my reading workflow**, especially the part for newsletter. Look in the table [on this page](https://world.numericcitizen.io/my-micro-workflows-explained) and sort by date to locate the most recent update.
</source:markdown>
    </item>
    
    <item>
      <title>Eternal Debate for Online Creators</title>
      <link>https://meta.numericcitizen.me/2025/08/17/eternal-debate-for-online-creators.html</link>
      <pubDate>Sun, 17 Aug 2025 11:02:02 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/17/eternal-debate-for-online-creators.html</guid>
      <description>&lt;p&gt;While searching for blog posts on numericcitizen.me, I discovered a few duplicates and some that were no longer relevant. I removed the duplicates, likely caused by previous migration processes, and decided to unpublish the outdated posts. There seems to be a debate about whether we should delete past publications. Some argue that all blog posts, regardless of relevance, reflect our identity and showcase what we once considered important. Others believe that removing irrelevant posts, which they refer to as noise, helps the remaining content stand out. As I agree to both arguments, I&amp;rsquo;m allowing myself to do some cleanup, from time to time, and it&amp;rsquo;s ok.&lt;/p&gt;
</description>
      <source:markdown>While searching for blog posts on numericcitizen.me, I discovered a few duplicates and some that were no longer relevant. I removed the duplicates, likely caused by previous migration processes, and decided to unpublish the outdated posts. There seems to be a debate about whether we should delete past publications. Some argue that all blog posts, regardless of relevance, reflect our identity and showcase what we once considered important. Others believe that removing irrelevant posts, which they refer to as noise, helps the remaining content stand out. As I agree to both arguments, I&#39;m allowing myself to do some cleanup, from time to time, and it&#39;s ok. 
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://meta.numericcitizen.me/2025/08/17/important-additions-to-my-generative.html</link>
      <pubDate>Sun, 17 Aug 2025 09:56:58 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/17/important-additions-to-my-generative.html</guid>
      <description>&lt;p&gt;Important additions to my &lt;strong&gt;generative AI usage rules&lt;/strong&gt;: use more than one service, try paid version to get better results, prioritize cloud-based services. More details &lt;a href=&#34;https://meta.numericcitizen.me/ai/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
      <source:markdown>Important additions to my **generative AI usage rules**: use more than one service, try paid version to get better results, prioritize cloud-based services. More details [here](https://meta.numericcitizen.me/ai/).
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://meta.numericcitizen.me/2025/08/16/when-i-read-about-vibe.html</link>
      <pubDate>Sat, 16 Aug 2025 07:31:54 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/16/when-i-read-about-vibe.html</guid>
      <description>&lt;p&gt;When I read about vibe coding to quickly create app mockups or even &lt;a href=&#34;https://youtu.be/3ZlDty0nRPY?si=Pq9uixmqu5zHCuDK&#34;&gt;shipping an app to the App Store&lt;/a&gt;, I wonder if I could use genAI to vibe code a theme plugin for Micro.blog. That would allow me to use a unique visual theme inspired by my visual branding.&lt;/p&gt;
</description>
      <source:markdown>When I read about vibe coding to quickly create app mockups or even [shipping an app to the App Store](https://youtu.be/3ZlDty0nRPY?si=Pq9uixmqu5zHCuDK), I wonder if I could use genAI to vibe code a theme plugin for Micro.blog. That would allow me to use a unique visual theme inspired by my visual branding. 
</source:markdown>
    </item>
    
    <item>
      <title>Now on Chillidog Hosting</title>
      <link>https://meta.numericcitizen.me/2025/08/10/now-on-chillidog-hosting.html</link>
      <pubDate>Sun, 10 Aug 2025 10:01:12 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/10/now-on-chillidog-hosting.html</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://whois.numericcitizen.me&#34;&gt;Who Is Numeric Citizen?&lt;/a&gt; website has moved from Cloudflare&amp;rsquo;s Workers app to Chillidog Hosting. This change was necessary to support PHP, which is required for Elements CMS. Additionally, the publishing workflow is now more straightforward since I no longer need to use a GitHub repository, which was necessary for hosting a static website on Cloudflare. It is rare to simplify a workflow while adding more features, in this case, PHP to implement a CMS component on the &lt;a href=&#34;https://whois.numericcitizen.me/news/&#34;&gt;News page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The migration process was relatively simple, thanks to Chillidog support, which was fantastic BTW. The process involved republishing my website using a new configuration publishing setup, which pointed to Chillidog. The setup was straightforward because Chillidog is familiar with Elements, which allows you to download a configuration settings file directly into Elements for setting up the FTP connection. Once republished, I made a DNS change at CloudFlare to replace a CNAME record with an A record to one of Chillidog&amp;rsquo;s servers. After 15 minutes, it was a done deal.&lt;/p&gt;
</description>
      <source:markdown>The [Who Is Numeric Citizen?](https://whois.numericcitizen.me) website has moved from Cloudflare&#39;s Workers app to Chillidog Hosting. This change was necessary to support PHP, which is required for Elements CMS. Additionally, the publishing workflow is now more straightforward since I no longer need to use a GitHub repository, which was necessary for hosting a static website on Cloudflare. It is rare to simplify a workflow while adding more features, in this case, PHP to implement a CMS component on the [News page](https://whois.numericcitizen.me/news/).

The migration process was relatively simple, thanks to Chillidog support, which was fantastic BTW. The process involved republishing my website using a new configuration publishing setup, which pointed to Chillidog. The setup was straightforward because Chillidog is familiar with Elements, which allows you to download a configuration settings file directly into Elements for setting up the FTP connection. Once republished, I made a DNS change at CloudFlare to replace a CNAME record with an A record to one of Chillidog&#39;s servers. After 15 minutes, it was a done deal.

</source:markdown>
    </item>
    
    <item>
      <title>Getting Ready for Elements CMS</title>
      <link>https://meta.numericcitizen.me/2025/08/07/getting-ready-for-elements-cms.html</link>
      <pubDate>Thu, 07 Aug 2025 06:55:35 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/07/getting-ready-for-elements-cms.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m getting ready to use the upcoming &lt;strong&gt;&lt;a href=&#34;https://youtu.be/ywtITCFFh2k?si=D9zn6l1QypIjs_oJ&#34;&gt;Elements CMS feature&lt;/a&gt;&lt;/strong&gt; when it becomes stable enough for production use. Today, I pushed out a big update to &amp;ldquo;&lt;a href=&#34;https://whois.numericcitizen.me&#34;&gt;Who Is Numeric Citizen?&lt;/a&gt;&amp;rdquo; website where I decided to split the Highlights section into four as I&amp;rsquo;m expecting them to grow over time. As for the CMS feature, it will require a change of my hosting solution. The website is currently hosted on Cloudflare as a worker-based app. I&amp;rsquo;ll first move the content to &lt;a href=&#34;https://chillidoghosting.com/&#34;&gt;Chillidog hosting&lt;/a&gt; first, then I&amp;rsquo;ll start adding the CMS feature in those areas: site news, redo the best articles section and add a tech wish list as CMS entries.&lt;/p&gt;
</description>
      <source:markdown>I&#39;m getting ready to use the upcoming **[Elements CMS feature](https://youtu.be/ywtITCFFh2k?si=D9zn6l1QypIjs_oJ)** when it becomes stable enough for production use. Today, I pushed out a big update to &#34;[Who Is Numeric Citizen?](https://whois.numericcitizen.me)&#34; website where I decided to split the Highlights section into four as I&#39;m expecting them to grow over time. As for the CMS feature, it will require a change of my hosting solution. The website is currently hosted on Cloudflare as a worker-based app. I&#39;ll first move the content to [Chillidog hosting](https://chillidoghosting.com/) first, then I&#39;ll start adding the CMS feature in those areas: site news, redo the best articles section and add a tech wish list as CMS entries.
</source:markdown>
    </item>
    
    <item>
      <title>Now on Ghost 6!</title>
      <link>https://meta.numericcitizen.me/2025/08/04/now-on-ghost.html</link>
      <pubDate>Mon, 04 Aug 2025 06:32:49 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/04/now-on-ghost.html</guid>
      <description>&lt;p&gt;My main website, &lt;a href=&#34;https://numericcitizen.me&#34;&gt;numericcitizen.me&lt;/a&gt;, is now officially using Ghost 6 which was released today. It was a short and painless process to upgrade. While Ghost.org will grandfather current plans, I discovered a price increase for my subscription tier (Creator), going from $25/month to $29/month. It seems that under my current plan, I can get all the juiced up analytics, which is nice. Yet, Ghost.org is a pricey service for a blogger like me.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/ghost6-ready.png&#34; width=&#34;600&#34; height=&#34;400&#34; alt=&#34;&#34;&gt;
</description>
      <source:markdown>My main website, [numericcitizen.me](https://numericcitizen.me), is now officially using Ghost 6 which was released today. It was a short and painless process to upgrade. While Ghost.org will grandfather current plans, I discovered a price increase for my subscription tier (Creator), going from $25/month to $29/month. It seems that under my current plan, I can get all the juiced up analytics, which is nice. Yet, Ghost.org is a pricey service for a blogger like me.

&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/ghost6-ready.png&#34; width=&#34;600&#34; height=&#34;400&#34; alt=&#34;&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title>My Official Response To Those Sketchy Offers</title>
      <link>https://meta.numericcitizen.me/2025/08/04/my-official-response-to-those.html</link>
      <pubDate>Mon, 04 Aug 2025 06:28:56 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/08/04/my-official-response-to-those.html</guid>
      <description>&lt;p&gt;Because I&amp;rsquo;m getting email inquiries many times a week for SEO improvement offers, link insertion, ads, etc. I decided to create my &lt;a href=&#34;https://meta.numericcitizen.me/stop/&#34;&gt;official response&lt;/a&gt; for these sketchy offers. I hope they understand the message, provided that they read it, of course, which I highly doubt. It&amp;rsquo;s probably a lost cause.&lt;/p&gt;
</description>
      <source:markdown>Because I&#39;m getting email inquiries many times a week for SEO improvement offers, link insertion, ads, etc. I decided to create my [official response](https://meta.numericcitizen.me/stop/) for these sketchy offers. I hope they understand the message, provided that they read it, of course, which I highly doubt. It&#39;s probably a lost cause.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://meta.numericcitizen.me/2025/07/28/because-diagrams-for-mac-seems.html</link>
      <pubDate>Mon, 28 Jul 2025 06:50:55 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/07/28/because-diagrams-for-mac-seems.html</guid>
      <description>&lt;p&gt;Because &lt;a href=&#34;https://diagrams.app/&#34;&gt;Diagrams for Mac&lt;/a&gt; seems to fall in the category of abandonware, if the &lt;a href=&#34;https://diagrams.app/blog&#34;&gt;latest blog post date&lt;/a&gt; is any indication, I decided to drop if from my tool set. The app wasn&amp;rsquo;t updated since macOS Monterey in 2022. Too bad, it was a rather promising diagramming tool.&lt;/p&gt;
</description>
      <source:markdown>Because [Diagrams for Mac](https://diagrams.app/) seems to fall in the category of abandonware, if the [latest blog post date](https://diagrams.app/blog) is any indication, I decided to drop if from my tool set. The app wasn&#39;t updated since macOS Monterey in 2022. Too bad, it was a rather promising diagramming tool.
</source:markdown>
    </item>
    
    <item>
      <title>Generative AI Applied to Website Analytics - Cool</title>
      <link>https://meta.numericcitizen.me/2025/05/26/generative-ai-applied-to-website.html</link>
      <pubDate>Mon, 26 May 2025 05:45:24 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/05/26/generative-ai-applied-to-website.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m trying out the new generative AI-based analytics from &lt;a href=&#34;https://tinylytics.app&#34;&gt;Tinylytics&lt;/a&gt;, and I&amp;rsquo;m very impressed. Here&amp;rsquo;s an example for &lt;a href=&#34;https://numericcitizen.me&#34;&gt;my main website&lt;/a&gt;. To my knowledge, that&amp;rsquo;s a first for website analytics and I hope that Plausible will take a look at this because it&amp;rsquo;s really useful. Plus, Tinylytics allows you to create your own prompt and see a different take than the one generated by default.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/cleanshottinylytics2025-05-2606.37.052x.png&#34; width=&#34;600&#34; height=&#34;374&#34; alt=&#34;&#34;&gt;
</description>
      <source:markdown>I&#39;m trying out the new generative AI-based analytics from [Tinylytics](https://tinylytics.app), and I&#39;m very impressed. Here&#39;s an example for [my main website](https://numericcitizen.me). To my knowledge, that&#39;s a first for website analytics and I hope that Plausible will take a look at this because it&#39;s really useful. Plus, Tinylytics allows you to create your own prompt and see a different take than the one generated by default. 

&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2025/cleanshottinylytics2025-05-2606.37.052x.png&#34; width=&#34;600&#34; height=&#34;374&#34; alt=&#34;&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title>An Update About My Journey with Realmac Software Elements</title>
      <link>https://meta.numericcitizen.me/2025/05/06/an-update-about-my-journey.html</link>
      <pubDate>Tue, 06 May 2025 05:50:36 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/05/06/an-update-about-my-journey.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been quiet lately because I&amp;rsquo;ve been dedicating more time to learning Realmac Software Elements. I plan to create a few websites for fun. The first will be a new landing page to replace the current one shared with Craft Docs (look &lt;a href=&#34;https://crafted.numericcitizen.me/about&#34;&gt;here&lt;/a&gt;). The second will be my professional website, which I’ll use when I transition to a freelance career. Ironically, the third will be a rework of my current employer&amp;rsquo;s corporate website, which I find quite unattractive.&lt;/p&gt;
&lt;p&gt;So far, it’s a rather exciting journey. Elements is an excellent Mac app, and the team behind it offers a stellar presence on their support forums. This adds to the excitement of being part of a small club trying to build a new app. Elements is still in beta and should launch this year. You should see &lt;a href=&#34;https://youtu.be/zas7L3rMX18?si=OFi6u-GSWrgo8R2b&#34;&gt;this video&lt;/a&gt; on YouTube showing the app’s user interface.&lt;/p&gt;
&lt;p&gt;My experience with Elements reminds me of &lt;a href=&#34;https://en.wikipedia.org/wiki/IWeb&#34;&gt;Apple’s iWeb website editor&lt;/a&gt;, which was part of the initial MobileMe rollout. However, Elements is much more powerful and geared toward a different crowd. The learning curve is much steeper, but it is reasonable for a guy like me. Elements is built around &lt;a href=&#34;https://tailwindcss.com/&#34;&gt;Tailwind CSS&lt;/a&gt;. I don’t know CSS or Tailwind CSS, but Elements hides its complexity.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tailwind CSS is a utility-first CSS framework created by Adam Wathan and the team at Tailwind Labs in 2017. Designed to streamline web development, it provides a comprehensive set of low-level utility classes that allow developers to style elements directly in their HTML without writing custom CSS. This approach enables rapid prototyping and highly customizable designs, making Tailwind CSS a popular choice for developers seeking efficiency and flexibility in building modern web interfaces.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As soon as my first project matures enough, I’ll share more about it.&lt;/p&gt;
</description>
      <source:markdown>I&#39;ve been quiet lately because I&#39;ve been dedicating more time to learning Realmac Software Elements. I plan to create a few websites for fun. The first will be a new landing page to replace the current one shared with Craft Docs (look [here](https://crafted.numericcitizen.me/about)). The second will be my professional website, which I’ll use when I transition to a freelance career. Ironically, the third will be a rework of my current employer&#39;s corporate website, which I find quite unattractive.

So far, it’s a rather exciting journey. Elements is an excellent Mac app, and the team behind it offers a stellar presence on their support forums. This adds to the excitement of being part of a small club trying to build a new app. Elements is still in beta and should launch this year. You should see [this video](https://youtu.be/zas7L3rMX18?si=OFi6u-GSWrgo8R2b) on YouTube showing the app’s user interface.

My experience with Elements reminds me of [Apple’s iWeb website editor](https://en.wikipedia.org/wiki/IWeb), which was part of the initial MobileMe rollout. However, Elements is much more powerful and geared toward a different crowd. The learning curve is much steeper, but it is reasonable for a guy like me. Elements is built around [Tailwind CSS](https://tailwindcss.com/). I don’t know CSS or Tailwind CSS, but Elements hides its complexity. 

&gt; Tailwind CSS is a utility-first CSS framework created by Adam Wathan and the team at Tailwind Labs in 2017. Designed to streamline web development, it provides a comprehensive set of low-level utility classes that allow developers to style elements directly in their HTML without writing custom CSS. This approach enables rapid prototyping and highly customizable designs, making Tailwind CSS a popular choice for developers seeking efficiency and flexibility in building modern web interfaces.

As soon as my first project matures enough, I’ll share more about it.

</source:markdown>
    </item>
    
    <item>
      <title>An Update On My Craft to Micro.blog Migration</title>
      <link>https://meta.numericcitizen.me/2025/03/30/an-update-on-my-craft.html</link>
      <pubDate>Sun, 30 Mar 2025 13:41:22 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/03/30/an-update-on-my-craft.html</guid>
      <description>&lt;p&gt;I finally completed the replication of content from the Craft-hosted website to Micro.blog-hosted website. I initiated this migration to reduce my dependency on Craft to host such content. Numeric Citizen I/O still points to Craft-hosted website (&lt;a href=&#34;https://world.numericcitizen.io/meta&#34;&gt;https://world.numericcitizen.io/meta&lt;/a&gt;), but 95% of the content is now available on Micro.blog via &lt;a href=&#34;https://meta.numericcitizen.me&#34;&gt;meta.numericcitizen.me&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Am I leaving Craft behind, not anytime soon, but I’m certainly continuing to consolidate my online presence under more open platforms.&lt;/p&gt;
</description>
      <source:markdown>I finally completed the replication of content from the Craft-hosted website to Micro.blog-hosted website. I initiated this migration to reduce my dependency on Craft to host such content. Numeric Citizen I/O still points to Craft-hosted website ([https://world.numericcitizen.io/meta](https://world.numericcitizen.io/meta)), but 95% of the content is now available on Micro.blog via [meta.numericcitizen.me](https://meta.numericcitizen.me).

Am I leaving Craft behind, not anytime soon, but I’m certainly continuing to consolidate my online presence under more open platforms.

</source:markdown>
    </item>
    
  </channel>
</rss>
