<rss version="2.0">
  <channel>
    <title>How To on Numeric Citizen I/O — A Blog About Blogging</title>
    <link>https://meta.numericcitizen.me/categories/how-to/</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>
    </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>
    </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>
    </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>
    </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>
    </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>
    </item>
    
    <item>
      <title>The Future of Writing? Testing ChatGPT Canvas for a Specific Use Case</title>
      <link>https://meta.numericcitizen.me/2025/03/28/the-future-of-writing-testing.html</link>
      <pubDate>Fri, 28 Mar 2025 14:45:24 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2025/03/28/the-future-of-writing-testing.html</guid>
      <description>&lt;p&gt;In October 2024, OpenAI launched &lt;strong&gt;ChatGPT Canvas&lt;/strong&gt;, designed to enhance the writing experience. Before ChatGPT Canvas, one writing approach using ChatGPT involved compiling these references into a ChatGPT project, then starting the writing process by using a first prompt, followed by another, and so forth. With ChatGPT Canvas, the approach promised to be more user-friendly, more interactive, more natural.&lt;/p&gt;
&lt;p&gt;I wondered which writing project I could use to test this new conversational experience. For a long time, I’ve wanted to write about the data protection and privacy features offered by Apple’s ecosystem for iPhone and Mac users. I had already started gathering references from Apple’s support website and elsewhere on the internet. It was the perfect use case for this experiment.&lt;/p&gt;
&lt;p&gt;ChatGPT Canvas starts off with a prompt, as usual, but now you include the term “canvas” in the request. The rest of the experience unfolds in an interface split into two sections: on the left side is the writing conversation, and on the right is the evolving draft. ChatGPT Canvas lets you interactively edit sections of text by selecting them first before requesting modifications. It’s highly interactive; somewhat like working with an editor in real-time. It’s very stimulating.&lt;/p&gt;
&lt;p&gt;With &amp;ldquo;&lt;a href=&#34;https://numericcitizen.me/protecting-your-digital-life-privacy-and-security-measures-for-apple-users/&#34;&gt;Protecting Your Digital Life: Privacy and Security Measures for Apple Users&lt;/a&gt;&amp;rdquo;, I had the opportunity to fully test this experience with my previously mentioned article project. ChatGPT was central to this writing project, but I also revised certain parts by removing or adding some content and by adding details that ChatGPT didn’t consider important enough to include. The result isn’t perfect, but it’s definitely better than what I would have written from scratch. I hope you enjoy reading it, and that you find the article informative. PS, the diagram is mine, not ChatGPT’s.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Combining Craft And Things 3 For My Writing Projects</title>
      <link>https://meta.numericcitizen.me/2024/05/07/combining-craft-and-things-for.html</link>
      <pubDate>Tue, 07 May 2024 19:00:00 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2024/05/07/combining-craft-and-things-for.html</guid>
      <description>&lt;p&gt;This article is about how I’m using Craft and Things 3, which is behind any short or long article I share online. Here is what happens when I get a new post idea.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In Things 3, Create an entry and set priority and desired or expected date of publication if known.&lt;/li&gt;
&lt;li&gt;In Craft, I create a new document, set the title and then copy the document’s deeplink to the clipboard.&lt;/li&gt;
&lt;li&gt;Still within Craft, I move the newly created document in the appropriate folder.&lt;/li&gt;
&lt;li&gt;Still within Craft, I optionally update my private creator dashboard document.&lt;/li&gt;
&lt;li&gt;Back to Things 3 and I paste the deeplink in the note field. It&amp;rsquo;s handy to jump from Things 3 to Craft with a single tap.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At this point, I can start my research, writing and editing of my article or blog post in Craft. Now, here is what happens after publishing my article:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mark the to-do item as done in Things 3.&lt;/li&gt;
&lt;li&gt;I update my private creator dashboard document by converting my deeplink to a new a permalink that I put in the Recently Published section.&lt;/li&gt;
&lt;li&gt;I monitor the appropriate RSS feed for quality control. See &lt;a href=&#34;https://numericcitizen.me/three-reasons-why-i-subscribe-to-my-own-rss-feeds/&#34;&gt;this article&lt;/a&gt; about subscribing to my own RSS feeds.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There you have it. Craft plays a central role in My Blogger Workflow. This blog post exposes what happens at the beginning and at the end of a new post idea. I hope you enjoyed it and maybe learned something.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Browsing Past Published Articles on Ghost</title>
      <link>https://meta.numericcitizen.me/2024/02/26/browsing-past-published.html</link>
      <pubDate>Mon, 26 Feb 2024 17:30:30 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2024/02/26/browsing-past-published.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;Circumventing Ghost&amp;rsquo;s limited posts management capabilities.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/143495/2024/ghost-published-content.png&#34; alt=&#34;List of publications in Ghost admin panel.&#34;&gt;&lt;/p&gt;
&lt;p&gt;I recently decided to spend some time editing past articles published on my Numeric Citizen Space &lt;a href=&#34;https://numericcitizen.me&#34;&gt;website&lt;/a&gt;. I first thought that by going to my Ghost admin page, I could quickly browse past published articles by month. I couldn&amp;rsquo;t be more wrong. In fact, Ghost offers limited post management capabilities, thanks to its limited content browsing capabilities. I cannot go back, say, list articles published early in 2023. I can sort by ascending or descending order, but from there, I have to scroll through a long, dynamically created list of posts. It’s not very effective for a website with 600-plus posts. I had to find a different option to locate a post for an update. This is where Ghost&amp;rsquo;s content APIs come into play.&lt;/p&gt;
&lt;p&gt;The following API request doesn’t do the job (API key voluntarily removed!):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;curl&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;-H&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Accept-Version: v5.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://numeric-citizen-introspection.ghost.io/ghost/api/content/posts/?key={APIkeygoeshere}&amp;amp;fields=title,url,published_at,updated_at&amp;amp;filter=published_at:&amp;gt;2024-01-01%2Bpublished_at:&amp;lt;2024-02-01&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;json_pp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let me explain what is this API request.&lt;/p&gt;
&lt;p&gt;First, I’m going to the request using the macOS command line, hence the &lt;code&gt;curl&lt;/code&gt; command. Next, the whole query follows in quotes. I query the content/posts API endpoint. Next, I pass my API key, followed by a field selection (&lt;code&gt;&amp;amp;fields&lt;/code&gt;), and next with the filter using the published date between two dates. Finally, I pipe the results in the pretty JSON print macro (is this a macro?) so the output looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;jfm@CraftingMAChine&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;~&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;curl&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;-H&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Accept-Version: v5.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://numeric-citizen-introspection.ghost.io/ghost/api/content/posts/?key={API-key-goes-here}&amp;amp;fields=title,id,url,published_at,updated_at&amp;amp;filter=published_at:&amp;gt;2024-01-01%2Bpublished_at:&amp;lt;2024-02-01&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;json_pp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	   &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;meta&amp;#34;&lt;/span&gt; : {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pagination&amp;#34;&lt;/span&gt; : {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;limit&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;next&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;page&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pages&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;prev&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;total&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	   },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	   &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;posts&amp;#34;&lt;/span&gt; : [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;65b6a09840566000015b0d37&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;published_at&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-01-28T13:50:19.000-05:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;My Weekly Creative Summary for the Week of 2024/03&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updated_at&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-01-28T13:50:19.000-05:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://numericcitizen.me/my-weekly-creative-summary-for-the-week-of-2024-03/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;65b6540640566000015b0cf7&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;published_at&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-01-28T08:23:26.000-05:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Special Message to Paying Subscribers&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updated_at&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-01-28T08:23:26.000-05:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://numericcitizen.me/special-message-to-paying-subscribers/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;65b16e25bc7fde0001314ccb&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;published_at&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-01-24T15:09:24.000-05:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The Mac Turns 40&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updated_at&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-01-24T15:09:24.000-05:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://numericcitizen.me/the-mac-turns-40/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;65ad35418532ae000169ddd2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;published_at&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-01-21T10:22:33.000-05:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;My Weekly Creative Summary for the Week 2024/02&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updated_at&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-01-21T10:22:33.000-05:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://numericcitizen.me/my-weekly-creative-summary-for-the-week-2024-02/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	   ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next, I copy the post ID of one article and paste it my browser for edition using this special URL:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://numeric-citizen-introspection.ghost.io/ghost/#/editor/post/652e6eedb8a2650001ad9c5b&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This URL brings me directly into the Ghost editor, provided that i was already authenticated with my account. That’s pretty much it. It could be much simpler. For this, I miss WordPress.&lt;/p&gt;
&lt;p&gt;You can find the Ghost API document right &lt;a href=&#34;https://ghost.org/docs/content-api/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Browsing Past Published Articles on Ghost</title>
      <link>https://meta.numericcitizen.me/2024/02/17/browsing-past-published-articles-on.html</link>
      <pubDate>Sat, 17 Feb 2024 14:00:00 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2024/02/17/browsing-past-published-articles-on.html</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/4B0A4B79-C27F-40AF-B4EF-9E12289BEED7/E0AA0901-400E-4EDC-8601-165929D9C16F_2/gUfqDUYleZSiiYqSWiru22yMmxyyrYHhJHYZy2vDvekz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;I recently decided to spend some time editing past articles published on my Numeric Citizen Space &lt;a href=&#34;https://numericcitizen.me&#34;&gt;website&lt;/a&gt;. I first thought that by going to my Ghost admin page, I could quickly browse past published articles by month. I couldn&amp;rsquo;t be more wrong. In fact, Ghost offers limited post management capabilities, thanks to its limited content browsing capabilities. I cannot go back, say, list articles published early in 2023. I can sort by ascending or descending order, but from there, I have to scroll through a long, dynamically created list of posts. Not very effective for a 600-plus posts website. I had to find a different option to locate a post up for an update. This is where Ghost&amp;rsquo;s content APIs come into play.&lt;/p&gt;
&lt;p&gt;The following API request doesn’t the job (API key voluntarly removed!):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;curl -H &amp;quot;Accept-Version: v5.0&amp;quot; &amp;quot;https://numeric-citizen-introspection.ghost.io/ghost/api/content/posts/?key={APIkeygoeshere}&amp;amp;fields=title,url,published_at,updated_at&amp;amp;filter=published_at:&amp;gt;2024-01-01%2Bpublished_at:&amp;lt;2024-02-01&amp;quot; | json_pp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Let me explain what is this API request.&lt;/p&gt;
&lt;p&gt;First, I’m going the request using macOS command line, hence the &lt;code&gt;curl&lt;/code&gt; command. Next, the whole query follows in quotes. I query the content / posts API endpoint. Next, I pass my API key, followed by a fields selection (&lt;code&gt;&amp;amp;fields&lt;/code&gt;), next with the filter using the published date between two dates. Finally, I pipe the results in the pretty JSON print macro (is this a macro?) so the output looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;jfm@CraftingMAChine ~ % curl -H &amp;quot;Accept-Version: v5.0&amp;quot; &amp;quot;https://numeric-citizen-introspection.ghost.io/ghost/api/content/posts/?key={API-key-goes-here}&amp;amp;fields=title,id,url,published_at,updated_at&amp;amp;filter=published_at:&amp;gt;2024-01-01%2Bpublished_at:&amp;lt;2024-02-01&amp;quot; | json_pp
{
   &amp;quot;meta&amp;quot; : {
      &amp;quot;pagination&amp;quot; : {
         &amp;quot;limit&amp;quot; : 15,
         &amp;quot;next&amp;quot; : null,
         &amp;quot;page&amp;quot; : 1,
         &amp;quot;pages&amp;quot; : 1,
         &amp;quot;prev&amp;quot; : null,
         &amp;quot;total&amp;quot; : 9
      }
   },
   &amp;quot;posts&amp;quot; : [
      {
         &amp;quot;id&amp;quot; : &amp;quot;65b6a09840566000015b0d37&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-28T13:50:19.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;My Weekly Creative Summary for the Week of 2024/03&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-28T13:50:19.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/my-weekly-creative-summary-for-the-week-of-2024-03/&amp;quot;
      },
      {
         &amp;quot;id&amp;quot; : &amp;quot;65b6540640566000015b0cf7&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-28T08:23:26.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;Special Message to Paying Subscribers&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-28T08:23:26.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/special-message-to-paying-subscribers/&amp;quot;
      },
      {
         &amp;quot;id&amp;quot; : &amp;quot;65b16e25bc7fde0001314ccb&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-24T15:09:24.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;The Mac Turns 40&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-24T15:09:24.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/the-mac-turns-40/&amp;quot;
      },
      {
         &amp;quot;id&amp;quot; : &amp;quot;65ad35418532ae000169ddd2&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-21T10:22:33.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;My Weekly Creative Summary for the Week 2024/02&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-21T10:22:33.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/my-weekly-creative-summary-for-the-week-2024-02/&amp;quot;
      },
      {
         &amp;quot;id&amp;quot; : &amp;quot;65ac3aa68532ae000169ddb6&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-20T16:28:20.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;New IT Rules at the Office Prompts Me to Revisit My Mac Usage at Home&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-20T16:28:20.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/new-it-rules-at-the-office-prompts-me-to-revisit-my-mac-usage-at-home/&amp;quot;
      },
      {
         &amp;quot;id&amp;quot; : &amp;quot;65a3ed6e8532ae000169dbe0&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-14T09:24:25.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;My Weekly Creative Summary for the Week of 2024/01&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-14T09:24:25.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/my-weekly-creative-summary-for-the-week-of-2024-01/&amp;quot;
      },
      {
         &amp;quot;id&amp;quot; : &amp;quot;659e86018532ae000169dbbf&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-10T06:58:44.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;Adobe Lightroom 2016-2024 RIP â How To Migrate From Adobe Lightroom to Photomator&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-10T06:58:44.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/adobe-lightroom-2016-2024-rip-how-to-migrate-from-adobe-lightroom-to-photomator/&amp;quot;
      },
      {
         &amp;quot;id&amp;quot; : &amp;quot;659d32eb8532ae000169dba7&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-09T06:53:21.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;Apple Vision Pro â The Missing Apple Keynote Case&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-09T06:53:21.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/apple-vision-pro-the-missing-apple-keynote-case/&amp;quot;
      },
      {
         &amp;quot;id&amp;quot; : &amp;quot;659953468532ae000169db6d&amp;quot;,
         &amp;quot;published_at&amp;quot; : &amp;quot;2024-01-06T08:27:04.000-05:00&amp;quot;,
         &amp;quot;title&amp;quot; : &amp;quot;A Tough Year Ahead for Apple&amp;quot;,
         &amp;quot;updated_at&amp;quot; : &amp;quot;2024-01-06T16:52:59.000-05:00&amp;quot;,
         &amp;quot;url&amp;quot; : &amp;quot;https://numericcitizen.me/a-though-year-for-apple/&amp;quot;
      }
   ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, I copy the post ID of one article and paste it my browser for edition using this special URL:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://numeric-citizen-introspection.ghost.io/ghost/#/editor/post/652e6eedb8a2650001ad9c5b&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This URL brings me directly into the Ghost editor, provided that i was already authenticated with my account. That’s pretty much it. It could be much simpler. For this, I miss WordPress.&lt;/p&gt;
&lt;p&gt;You can find the Ghost API document right here.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ghost.org/docs/content-api/&#34;&gt;https://ghost.org/docs/content-api/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This article is also available &lt;a href=&#34;https://meta.numericcitizen.me/2024/02/26/browsing-past-published.html&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Moving Out of WordPress — The DNS Side of the Story</title>
      <link>https://meta.numericcitizen.me/2023/05/16/moving-out-of-wordpress-the.html</link>
      <pubDate>Tue, 16 May 2023 06:00:00 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2023/05/16/moving-out-of-wordpress-the.html</guid>
      <description>&lt;p&gt;The migration from GoDaddy to CloudFlare was mandatory to support the ability to use a custom domain with Ghost at the root level (numericcitizen.me), using CNAME. This is something that is not possible using GoDaddy. The process is relatively simple once you’ve done your homework of reading ALL the documentation from both GoDaddy and CloudFlare.&lt;/p&gt;
&lt;h2 id=&#34;wordpress-numericcitizenme-current-config&#34;&gt;WordPress: numericcitizen.me current config&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Hosted on GoDaddy, the host file:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/34364799-0c1b-6d62-97ea-207f079b3af3/aL8eCDxyNZktyiN69z1wlx2vqm6GR15LLlJOf4uyPMYz/numericcitizen.me.txt&#34;&gt;numericcitizen.me.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/48f1399c-ffe3-f507-c01f-ccc8a392a3f8/fxH8SZVbRczpby539ovuaCGlRLQZCyrrQjkm8t1UKqYz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;WordPress configuration to use numericcitizen.me&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/ab17c2df-4037-fbee-938b-175c9c0467dc/Y31S364ChyxvyibKVKrWQBJ7ODe6gUIf9WjXkoOm3kQz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/3c0bd41e-d5f8-f6c7-b307-f810604ebb23/NQCGqRylNgo4EWh8mR5Wsm3U4uyuYtygyfrJF7mA0mAz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;website will only be available through: &lt;a href=&#34;https://numericcitizen.wordpress.com&#34;&gt;https://numericcitizen.wordpress.com&lt;/a&gt; once domain disconnected&lt;/p&gt;
&lt;h2 id=&#34;ghost-numericcitizen-introspectionblog-current-configuration&#34;&gt;Ghost: numericcitizen-introspection.blog current configuration&lt;/h2&gt;
&lt;p&gt;Hosted on CloudFlare&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/2e804126-5719-879d-a4cc-f78b03da046f/7J2URcTCJ5tK1VyTzgV9Ey9x3bNDvbhbZHOXTxCNIToz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;CloudFlare host file:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/8ce63acf-675d-b968-a7a9-08162d050af3/aox9FQvsfdoB1KoFDzvbD7w5yoUfxOHExP9MqYZfrhQz/numericcitizen-introspection.blog.txt&#34;&gt;numericcitizen-introspection.blog.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/347947e9-50dc-e081-4f64-eaa8cf5b32f9/R6nVFr1kfIMOuzuePytxbkYzSTfr0YyqicUZ2tdR7aIz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;start-of-dns-changes&#34;&gt;Start of DNS changes&lt;/h2&gt;
&lt;p&gt;Because I’m planning to use a root domain for Ghost, as per &lt;a href=&#34;https://ghost.org/help/godaddy-domain-setup-guide/&#34;&gt;this Ghost article&lt;/a&gt;, GoDaddy doesn’t support root domain:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/be783fc4-bb45-c1b6-2a62-b37070832049/VyBs19ZR3xhN7Mrqc3ItI89N5hOW9KYhHHsppgteyIwz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;numericcitizen.me&lt;/strong&gt; domain will need to be transferred from GoDaddy to CloudFlare first.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On GoDaddy: Update contact information on the source domain on GoDaddy to be exactly the same for both domains.&lt;/li&gt;
&lt;li&gt;On GoDaddy: Unlock the domain to allow for registrar change.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/af65a3b4-f9a1-2bcd-922b-84d0d70bf0dd/5kxCDO1ycczflM4atDwOphZYfgymVkxrBn9FpFyQuT0z/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On CloudFlare: Add the domain name to my CloudFlare account.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/2763d5d9-7875-8275-1c52-83dc3f0f4084/iNpoa3qB1l08nItG7x5Fi5HImk8T7xFSABkeRvvSW1Yz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/7c1ecc73-6772-385f-eab1-f82e2ac7e90e/FPR1XwRpW0LHiRAfyzd3AtpGmJTK0mXkSjx4LtNvRPkz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;CloudFlare name servers:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://hans.ns.cloudflare.com&#34;&gt;hans.ns.cloudflare.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;noor.ns.cloudflare.com&#34;&gt;noor.ns.cloudflare.com&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On GoDaddy, edit nameservers on the domain:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/7328aad6-c1b8-2c0c-4b23-bbed5da6d05b/LRS9q9okofOSIMyNKRBlN72HhL9FOYLTEpxcgLCa09Qz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Proceed to the CloudFlare &lt;a href=&#34;https://developers.cloudflare.com/registrar/get-started/transfer-domain-to-cloudflare/&#34;&gt;procedure&lt;/a&gt;, but first, add the &lt;strong&gt;numericcitizen.me&lt;/strong&gt; domain to the CloudFlare account using &lt;a href=&#34;https://ghost.org/help/cloudflare-domain-setup/&#34;&gt;this article&lt;/a&gt;. Then, continue using GoDaddy&amp;rsquo;s &lt;a href=&#34;https://ca.godaddy.com/help/transfer-my-domain-away-from-godaddy-3560&#34;&gt;procedure&lt;/a&gt;. Once done, proceed with the following steps.&lt;/p&gt;
&lt;p&gt;Steps to follow once the domain has been successfully transferred to CloudFlare.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Disconnect &lt;strong&gt;numericcitizen.me&lt;/strong&gt; from WordPress (website should stop resolving under &lt;strong&gt;numericcitizen.me&lt;/strong&gt; except &lt;a href=&#34;https://numericcitizen.wordpress.com&#34;&gt;https://numericcitizen.wordpress.com&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;In the GoDaddy domain manager, remove two &lt;code&gt;A records&lt;/code&gt; pointing to WordPress servers (&lt;code&gt;192.0.78.*&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;CNAME @ numeric-citizen-introspection.ghost.io&lt;/code&gt; so that &lt;a href=&#34;https://numericcitizen.me&#34;&gt;https://numericcitizen.me&lt;/a&gt; (root domain) resolves to &lt;strong&gt;numeric-citizen-introspection.ghost.io&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The use of a CNAME for a root domain is explained in super and great details &lt;a href=&#34;https://developers.cloudflare.com/dns/cname-flattening/cname-flattening-diagram/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wait for propagation using &lt;a href=&#34;https://www.whatsmydns.net&#34;&gt;https://www.whatsmydns.net&lt;/a&gt; (like a few hours).&lt;/li&gt;
&lt;li&gt;In Ghost(Pro) &amp;gt; Domain, &lt;strong&gt;Update&lt;/strong&gt; current domain:
&lt;ol&gt;
&lt;li&gt;change the following according to the actual process.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/0941b797-f1a1-3e80-816b-9202756d8f6d/vDwpyb8NTgJW3AXFjIFwwHHDyJckxGAGdoOyu1Un7tEz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/5399d392-e6af-f6d3-3328-e68aeaa83c22/N4xzvQRi0xA8TTK8ky0Xa0l3vB0qJZz3g24TjSAv7ioz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/d39ae0f0-d484-6f9d-e418-22ecf2975159/g6nhxe8lXfVlylkpnjDta56gt3WdwhrZg9Hy77qyJ2wz/Safari-GhostPro%20-%20Numeric%20Citizen%20Blog2023-03-2415.55.402x.png&#34; alt=&#34;Safari-Ghost(Pro) - Numeric Citizen Blog@2023-03-24@15.55.40@2x.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/9B98963F-0D1A-4BDB-966A-908B5760967D/02d3fb72-757b-2612-e20e-690fe21f049e/ImSlQZuLWRr2jkOeB7hA7TeFUE5L6VO1OVNhoiKQ6M8z/Safari-GhostPro%20-%20Numeric%20Citizen%20Blog2023-03-2415.55.482x.png&#34; alt=&#34;Safari-Ghost(Pro) - Numeric Citizen Blog@2023-03-24@15.55.48@2x.png&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Still using Ghost(Pro) &amp;gt; Domain, set new ghost subdomain to &lt;strong&gt;numericitizen-me.ghost.io&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Wait for the process to complete&lt;/li&gt;
&lt;li&gt;Test &lt;a href=&#34;https://numericcitizen.me&#34;&gt;https://numericcitizen.me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Test intra-links.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Done.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Moving Out of WordPress — My Detailed Experience</title>
      <link>https://meta.numericcitizen.me/2023/03/25/moving-out-of-wordpress-my.html</link>
      <pubDate>Sat, 25 Mar 2023 10:00:00 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2023/03/25/moving-out-of-wordpress-my.html</guid>
      <description>&lt;p&gt;So it began. Then it concluded. After thinking about it for a while doing some detailed planning, I’m officially done with moving out of WordPress.com for my blog hosting service. I’m leaving after so many years of joy and pain (I’ve been on WordPress since 2015).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://numericcitizen.me/bye-bye-wordpress-hello-again-ghost/&#34;&gt;https://numericcitizen.me/bye-bye-wordpress-hello-again-ghost/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://numericcitizen.me/special-announcement-some-important-changes-coming-soon/&#34;&gt;https://numericcitizen.me/special-announcement-some-important-changes-coming-soon/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://numericcitizen.me/2023/01/20/a-message-to-my-readers-followers-on-wordpress-com/&#34;&gt;https://numericcitizen.me/2023/01/20/a-message-to-my-readers-followers-on-wordpress-com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://numericcitizen.me/important-change-coming-to-this-website/&#34;&gt;https://numericcitizen.me/important-change-coming-to-this-website/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://numericcitizen.me/a-message-to-my-readers-followers-on-wordpress-com/&#34;&gt;https://numericcitizen.me/a-message-to-my-readers-followers-on-wordpress-com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I recently spent quite some time working on my WordPress.com exit. First, I prepared a project plan and make it one of my main focuses for the year. Second, I started to clean up my content. I reviewed in more or less detail all of my 766 posts. Many posts were deleted for different reasons: too much time-sensitive, irrelevant content, posts with many embedded tweets, etc.&lt;/p&gt;
&lt;p&gt;All in all, I’m now down to 325 posts. These are the ones that I want to migrate out of WordPress. Here is why.&lt;/p&gt;
&lt;h2 id=&#34;why&#34;&gt;Why&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;WordPress is needy. It requires a configuration to run correctly when using many plugins.&lt;/li&gt;
&lt;li&gt;Posting on WordPress requires too much work before a post becomes online.&lt;/li&gt;
&lt;li&gt;I want to focus more on content less on management. I value frictionless experiences.&lt;/li&gt;
&lt;li&gt;WordPress.com is very expensive. I was subscribing to the business plan because of my plugin usage, and I wanted to suppress ads for my readers.&lt;/li&gt;
&lt;li&gt;By quitting Twitter, there were many plugins that I was longer using.&lt;/li&gt;
&lt;li&gt;Many plugins are not free, and I was tired of paying for something with questionable value.&lt;/li&gt;
&lt;li&gt;Some plugins didn’t have the expected effects on SEO.&lt;/li&gt;
&lt;li&gt;I’m also on Ghost.org, and I feel it was redundant to keep both. Ghost is more polished, lighter to manage, cleaner to experience, and easier to use when posting content.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;expected-gains&#34;&gt;Expected gains&lt;/h2&gt;
&lt;p&gt;By moving out of WordPress, and merging content to Ghost, I’ll be gaining these features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Newsletter functionality which could allow me to send mail on an as-needed basis.&lt;/li&gt;
&lt;li&gt;A refreshed and more straightforward design is needed for a more responsive website.&lt;/li&gt;
&lt;li&gt;The possibility to post directly from Craft to Ghost. I’m not expecting to use this, but if I want, it’s there.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/2C6DF123-45F7-4673-B328-593ACB15BC37/1c1d5526-fcb9-fe55-dde9-15b34af80500/II4R2m60fQyl7b4yyjx3rLlV8czqOhnryXx5o5YEnXgz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-process&#34;&gt;The process&lt;/h2&gt;
&lt;p&gt;The next step was to dig a little bit into the migration process itself which is based on the use of a plugin: &lt;a href=&#34;https://wordpress.org/plugins/ghost/&#34;&gt;Export to Ghost&lt;/a&gt;, which is free and is currently at version 1.2.1. The process is well &lt;a href=&#34;https://ghost.org/docs/migration/wordpress/#troubleshooting?utm_source=wp-ghost-plugin&#34;&gt;documented&lt;/a&gt; on Ghost&amp;rsquo;s website and on the web in different articles. Issues arise when you start to look deeper into the process. Upon the first try to export my content, the process timed out and I got a message from WordPress.com&amp;rsquo;s gateway (nginx). Ouch. A second try produced the same results. I couldn&amp;rsquo;t image either losing my content or having to move manually. I thought it was an issue with my WordPress instance so I asked for some help from WordPress.com&amp;rsquo;s support for an investigation. These guys are always willing to help but they couldn&amp;rsquo;t really fix it. After a bit more of reading, I tried connecting to my WordPress website with FTP and saw what was in there. I was surprised to see the following:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/2C6DF123-45F7-4673-B328-593ACB15BC37/082fc69e-c0dd-b0d6-1278-9f05d8289678/aALkpGdB2HzaIaFgwexoXuw1Or2Yye3rpwqjVoQd8ZEz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;wp-content&lt;/code&gt; folder contained another folder called “&lt;code&gt;uploads&lt;/code&gt;” and another named “&lt;code&gt;ghost-exports&lt;/code&gt;”. The files I was expecting to start downloading to my Mac were sitting right there. The JSON file is the file to import into the Ghost service, while the other zip file was the images referenced by my posts. Exploring the JSON file revealed a typical structure Ghost expects while importing content.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/2C6DF123-45F7-4673-B328-593ACB15BC37/1470aa2d-9b3b-e5fa-1782-a227e7daaacb/cmcyci4qC9JEs8JwsuWcO7aL7sk4nJJKtWyXTybvtToz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Oh, one thing that I learned: Firefox is a great tool for reading and parsing JSON files. Did you know that?&lt;/p&gt;
&lt;p&gt;The “&lt;code&gt;mobiledoc&lt;/code&gt;” node is where the actual post content is. Digging a bit deeper, I could find &lt;code&gt;HTTPS&lt;/code&gt; requests for each image like the following example:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/2C6DF123-45F7-4673-B328-593ACB15BC37/ae4e6562-17e0-ffed-3fa4-7aaaf2a72086/elYeAI32GXeIqxBgdl887jAwwMrmJrGtKM04e5sNh9Ez/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;I was curious how this would work at the import stage. The &lt;code&gt;?w=124&amp;amp;&lt;/code&gt;… was added by one of my WordPress plugin for some image optimization purposes. I wasn’t quite sure it would work when trying to import that file into Ghost. I started to search for tool to remove those &lt;code&gt;HTTPS&lt;/code&gt; parameters. Eventually, I gave up this path.&lt;/p&gt;
&lt;p&gt;Then I started questioning my strategy. Maybe it was easier to just translate everything from WordPress to a more portable format, like Markdown. I did some manual testing by downloading a single post, then tried to edit the resulting file in Ulysses and then upload it to Ghost. It required too much manual work. On top of that, I couldn’t back-date the article I was trying to push on Ghost. I gave up that route too.&lt;/p&gt;
&lt;p&gt;While searching for other solutions, I came across &lt;a href=&#34;https://ghost.org/docs/migration/pro/&#34;&gt;a web page on Ghost.org&lt;/a&gt; about a concierge service for Ghost(Pro) subscribers. I decided to write and ask If I was eligible. In less than 12 hours, I got an affirmative response. I was relieved.&lt;/p&gt;
&lt;p&gt;Over the course of three days, we exchanged emails detailing the migration process and for answering my numerous questions about the expected results. I cannot overstate enough how great the support was. Just before the weekend, everything was moved and my domain name setup updated. The latter part was on my responsibility. I’ll post a more detailed article just for the DNS portion of the migration.&lt;/p&gt;
&lt;h2 id=&#34;plugins&#34;&gt;Plugins&lt;/h2&gt;
&lt;p&gt;A few words about WordPress plugins and Ghost Integration. WordPress plugin economy is large and deep. It’s a rich ecosystem. On Ghost, plugins are called Integration. I’m not seeing the equivalent ecosystem, but that’s ok. I’m using the follow integration.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unsplash for easy insertion of images into posts.&lt;/li&gt;
&lt;li&gt;Ulysses for easy posting from this wonderful writing app.&lt;/li&gt;
&lt;li&gt;Plausible for analytics.&lt;/li&gt;
&lt;li&gt;Stripe to receive subscription fees from subscribers.&lt;/li&gt;
&lt;li&gt;Custom integration for Craft support of posting from within the app.&lt;/li&gt;
&lt;li&gt;Custom integration for cross posting of content from my Write.as account.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;some-important-migration-details&#34;&gt;Some important migration details&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The first thing was to change the DNS from WordPress to GoDaddy where my domain name is registered. I later discovered that I the domain needed to move to CloudFlare to support CNAME for the root domain, something GoDaddy don’t support.&lt;/li&gt;
&lt;li&gt;Domain name &lt;a href=&#34;https://numericcitizen-introspection.blog&#34;&gt;https://numericcitizen-introspection.blog&lt;/a&gt; will eventually lead to &lt;a href=&#34;https://numericcitizen.me&#34;&gt;https://numericcitizen.me&lt;/a&gt; via the help of a forwarder. I still have this to fix.&lt;/li&gt;
&lt;li&gt;Links should with slug &lt;code&gt;/year/month/date&lt;/code&gt; in them should continue to work, thanks to redirections that were created the Ghost&amp;rsquo;s support personnel.&lt;/li&gt;
&lt;li&gt;I created a backup file with WordPress.com backup plugin for archives purposes. I extracted all my images and uploaded them on my DS720+ Synology NAS for easy access.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/2C6DF123-45F7-4673-B328-593ACB15BC37/8a5938e6-18b3-2daa-2843-74608f9b0be7/xl6yN1J7bAtTkGnG9LIFCB8qVIINWl1y4VChmQU5xZYz/Image.png&#34; alt=&#34;Image.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;a-few-things-were-lost-along-the-way&#34;&gt;A few things were lost along the way&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The possibility of getting “likes” on WordPress posts. I don’t care.&lt;/li&gt;
&lt;li&gt;Past comments on each post couldn’t be migrated. That was expected. I’m a bit sad for this, but my content is worth more.&lt;/li&gt;
&lt;li&gt;My 154 WordPress.com followers. I don’t have a mean of moving them to Ghost. The only thing is to write a blogpost asking them to subscribe to my new blog, with Ghost’s newsletter feature. After publishing such article, I didn’t see any increase in subscribers. I expect most of my WordPress followers just don’t care or are simply inactive.&lt;/li&gt;
&lt;li&gt;Jetpack app and WordPress app on the iPad and iPhone, these are no longer needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-im-going-to-miss&#34;&gt;What I’m going to miss&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Native application support on the iPad; Ghost doesn’t offer an iPad or iPhone app. The solution is to use Ulysses for my posting needs. I’m fine with this, I’m already using it for my Micro.blog posts.&lt;/li&gt;
&lt;li&gt;Custom themes are seemingly more limited on Ghost compared to WordPress. I’ll probably explore alternatives in the future.&lt;/li&gt;
&lt;li&gt;Posts path no longer uses the YYYY/MM/JJ/ document-title. I like it when the date if part of the path.&lt;/li&gt;
&lt;li&gt;RSS feed users on WordPress will need to update their subscription so their feed keep working.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;core-web-vitals-change&#34;&gt;Core web vitals change&lt;/h2&gt;
&lt;p&gt;The following are snapshots of my PageSpeed Core Web Vitals stats.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/4B0A4B79-C27F-40AF-B4EF-9E12289BEED7/329919A0-8ED4-480A-9BDA-CA977580CDDC_2/xc1mMPnzxQmVBeo85wwSsW2BKGmoDUdHn8aOLWIfGhwz/Safari-PageSpeed%20Insights2023-03-2417.46.492x.png&#34; alt=&#34;Safari-PageSpeed Insights@2023-03-24@17.46.49@2x.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/4B0A4B79-C27F-40AF-B4EF-9E12289BEED7/67F3AA90-C830-423E-A88B-4D9E57C6AB7A_2/QGAgwExygWZbDzT1nQGvV7MUB4o8yuF14Ql9rVYpCQgz/Safari-PageSpeed%20Insights2023-03-2417.46.392x.png&#34; alt=&#34;Safari-PageSpeed Insights@2023-03-24@17.46.39@2x.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Before the migration&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/4B0A4B79-C27F-40AF-B4EF-9E12289BEED7/CFB2FCEE-EBB1-459C-B452-607CC3DB5678_2/tVxe7uIie8KZSKv2DMxBNARiDSgWcpt6DnQ7NdjmmxMz/Safari-PageSpeed%20Insights2023-03-2417.46.052x.png&#34; alt=&#34;Safari-PageSpeed Insights@2023-03-24@17.46.05@2x.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;After the migration&lt;/p&gt;
&lt;p&gt;Overall, migrating to Ghost is an improvement. I’ll be monitoring this over the course of upcoming weeks and months so see how this will affect my visitors statistics.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It took me many long hours to make this move, but it was well worth it. I’m using a more modern and easier platform for my publication needs. I had to refresh my knowledge of a DNS service too. Since 2015, I learn a bit of WordPress and I consider to be an intermediate user. I prefer Ghost now.&lt;/p&gt;
&lt;p&gt;I hope you learn a few things with this article Feel free to post comments using the commenting feature of this Craft-made site.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Documenting My Numeric Life With Dayone</title>
      <link>https://meta.numericcitizen.me/2023/03/06/documenting-my-numeric-life-with.html</link>
      <pubDate>Mon, 06 Mar 2023 18:00:00 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2023/03/06/documenting-my-numeric-life-with.html</guid>
      <description>&lt;p&gt;Do you have a Flickr or &lt;a href=&#34;https://glass.photo/&#34;&gt;Glass&lt;/a&gt; account where you posted your best shots describing your mood when the pictures were taken? Do you have a Twitter or Mastodon account where you describe what’s on your mind? Maybe you are a blogger posting on WordPress or Micro.blog about a trip you are currently doing? If you answered yes to a few or all of these questions, you must read this article explaining how you could be documenting your life, automatically. Why? how do you ensure the content you create on the Internet will stay forever accessible to you? How can you make sure you won’t lose anything when a service like Flickr changes the rules and remove pictures from its platform? I have set up a process to automatically document my numeric life with content I post online. Here is how.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/217BD1E3-325D-4D2F-9E9A-1ACA0A92A45D/DC7D495C-A107-469E-A15E-A4B9958CF042_2/ps7olD5AI7VZFMGAa3bzc2zNfrM5R21x5R5EpOyqtLcz/intro-devices402x.jpeg&#34; alt=&#34;Dayone is available on iPhone, iPad and Mac too. All data is synced across devices.&#34;&gt;&lt;/p&gt;
&lt;p&gt;I’ve been using the excellent and powerful journaling app named &lt;a href=&#34;http://dayoneapp.com/&#34;&gt;Dayone&lt;/a&gt; to help me save a copy of my digital work. Dayone allows you to create journal entries containing text, photos, audio recordings, drawings, videos, etc. In addition, each entry contains metadata like the current weather, the GPS coordinates, the current music playing, etc. The key to my setup is to integrate Dayone with the automation service called &lt;a href=&#34;https://ifttt.com/&#34;&gt;IFTTT&lt;/a&gt;, which is a web service that allows you to automate tasks involving other web services. One such example of automation is to automatically post on Mastodon a photo you just uploaded to Flickr. Glass alone doesn’t do that, so to circumvent this, I use IFTTT to do it for me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/4B0A4B79-C27F-40AF-B4EF-9E12289BEED7/4A3819EC-D817-409B-B513-0D9EEC9A034A_2/k3kfKzK5nez6ywnZsxbner4In78qrok739GfeIXNv9sz/Image.png&#34; alt=&#34;On IFTTT to sync content from Micro.blog using the RSS feed to my personal journal app, Dayone.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The cool thing is that you can also use IFTTT to push content to your Dayone journal&lt;/strong&gt;. To integrate both, you need to subscribe to the premium tier of Dayone. This will enable many cool features like syncing your journals on Dayone web servers. Second, this will make it possible for IFTTT web services to push content into your Dayone journals over the web. Don’t worry about security here, all of this data movement is secured with encryption.&lt;/p&gt;
&lt;p&gt;As an example, I have created an “applet” on IFTTT that does this: if I publish a picture on Glass, I’d like to keep this post in my personal journal on Dayone and give it the tag “Glass”. The journal entry will include the picture itself, the description, the date and time and the source of information. Pretty cool huh?! I have many applets that I have created to save, for example, a copy of all my posts on Micro.blog, or create an entry each time I publish a new blog post here on &lt;a href=&#34;https://numericcitizen.me/&#34;&gt;numericcitizen.me&lt;/a&gt;. Using RSS feeds with IFTTT is super simple.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/4B0A4B79-C27F-40AF-B4EF-9E12289BEED7/54287B71-3DDC-47A1-B4E7-B6685B56344F_2/1Xr4YntW0eevc9yg2xXCcvv3AcYkgiS9SZaAKSxmMVIz/Image.png&#34; alt=&#34;My Dayone journal containing my archives of posts from Micro.blog&#34;&gt;&lt;/p&gt;
&lt;p&gt;With all these applets working for me in the background, it is documenting and saving what I post on the internet via different web services that I use. The following diagram shows the flow of information between the sources and the destination, Dayone.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/doc/4B0A4B79-C27F-40AF-B4EF-9E12289BEED7/D537D403-0D0B-4AD2-B53F-A2B37ECFBB5E_2/yShFg2p6gPAKhYYPofiL5mDsLyjJMrxxqy64R82ph44z/Document%20Numeric%20Life.png&#34; alt=&#34;Document Numeric Life.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;On the left, are the web services that I use for publishing content, and on the right, Dayone who gets all the information confined thanks to applets running at IFTTT.&lt;/p&gt;
&lt;p&gt;As you can see, my internet presence is not only here on WordPress. I publish YouTube videos, I have a Micro.blog account, I’m posting photos on Glass, and I’m a YouTube consumer too. Nearly all of my interactions with these services are saved within my personal journal on Dayone. I find it to be cool and relieving to know that I can find my personal archives readily available. After reading this article, maybe you’ll consider doing something similar for your content, too?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Documenting Blog Changes</title>
      <link>https://meta.numericcitizen.me/2021/03/02/documenting-blog-changes.html</link>
      <pubDate>Tue, 02 Mar 2021 14:00:00 -0500</pubDate>
      
      <guid>http://numericcitizen-meta.micro.blog/2021/03/02/documenting-blog-changes.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;Using Git instead of Dropbox for Blot content syncing provides an unexpected benefit.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As I &lt;a href=&#34;https://numericcitizen.io/2021/02/28/selecting-a-git-client&#34;&gt;recently wrote&lt;/a&gt;, Blot supports two mechanisms for synchronizing content from my Mac to the web: Dropbox or Git. I chose Git. As I write this, I’m still testing Nova as the Git front-end (I’m a GUI type of guy). One of the great benefits of using Git is the built-in history of commits that is at the core of any Git repo. As shown below, as I push updates to my Blot-based website, I make sure to write a short comment in the commit action to document the commit action. I think this is an important asset in managing a blog and owning its content.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.numericcitizen.me/uploads/2024/-git-repo-commit-history.png&#34; alt=&#34;Commit history to the blog report using Nova&#34;&gt;&lt;/p&gt;
&lt;p&gt;A better view at the GIT panel in Nova:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://res.craft.do/user/full/2af24264-e3c1-fb23-4d31-e2491112f9ab/1524BBEE-239E-4283-950D-DE8122729DB1_2/GQAhclIful6uywpYyOH0Efriq5EpNtE37gduH8k9QHcz/_Nova-Commit-message.png&#34; alt=&#34;Nova GIT panel with commit message area&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>