A Peek At My Photo Processing Workflow

This meta blog is mostly about my content creation workflows. Photography is a big part of it, so I posted an update last week-end about it, after a two-year period.

My last photo processing update is more than two years old. Quite a few things have happened since 2020: many things are in, but many things are out too. I learned to use new services while dropping those that don’t fit my content creation journey. Let’s see what’s in and what’s out.

What’s in

  • Glass, the new kid on the block of photo-sharing services, is in, and I like it a lot, as I wrote in “my experience with the service.”
  • Exposure is in, and I love it so much that it will replace Smugmug as my official home. The main reason is the possibility of a great mix of images and text forming beautiful posts. All posts published on Exposure are cross-posted to Micro.blog.
  • Adobe Spark was renamed to Adobe Express recently. I’m rarely using it, but when I do, I like this creative tool.
  • On the hardware side, my iPhone 11 Pro was upgraded to an iPhone 13 Pro back in the fall of 2021, and I wrote in detail in Upgrading From the iPhone 11 Pro to iPhone 13 Pro — the Love Story Continues – Numeric Citizen Blog. In summary, it was a great upgrade for my photography creativity.

What’s out

I guess the following items should be added to my long list of “Things that don’t stick with me” article. Let’s see one by one the ousted service or app.

  • My iPhone 13 Pro played a major role during my trip to Italy last summer. Two-thirds of my shots came through my iPhone 13 Pro device, one third with my Nikon D750. The trend is worrisome. Is my Nikon D750 on the way out? Not yet, but… I know it won’t be part of my next trip to South America this coming December.
  • 500px is out (it previously replaced Flickr) and eventually was, in turn, replaced by Smugmug. The latter is on the way out too, and will be replaced by Exposure. The process has already started (read my Experience using the service recently published).
  • Universe was a one-year experience but was later abandoned. It gave me the unique experience of building a simple website showing my urban exploration photographic work.
  • Gurushots, a photo contest community, is out of my digital life. I still have an account but I no longer spend time on this website. It’s a big waste of time as fully documented GuruShots Tips and Tricks Guide — The 2021 Edition — Part I – Numeric Citizen Blog and in GuruShots Tips and Tricks Guide — The 2021 Edition — Part 2 – Numeric Citizen Blog.
  • Camera+ is another victim of my workflow constant optimization. It was briefly replaced by the excellent Halide, but again it was dropped in favour of Apple’s stock Camera app. If I had an iPhone 14 Pro, I would probably switch back to Halide as it offers an easy way to turn on and off the 48-megapixels camera mode.
  • Also out is my content on Adobe Portfolio (I wrote a small review about the service a while back). While the tied integration with Adobe Lightroom is nice, it wasn’t easy to create a website to my liking, and I eventually dropped the service. Exposure is a photo-sharing service that goes way beyond Adobe Portfolio.
  • My use of Adobe Lightroom Classic has significantly decreased since my last workflow update. My go-to photo editing app is Adobe Lightroom (both on iPad or M1 MacBook Air), and Pixelmator Photo on the iPad comes in second. The latter was extensively used during my summer trip to Italy.
  • I also stopped using Skylum Aurora HDR & Luminar as my need for HDR is nonexistent (it used to be the case when I was doing urban exploration, which is no longer the case, sadly).
  • On the hardware side, I sold my 2017 4K Retina iMac (read “Remembering My Story of Owning The 4K Retina 21.5 inches iMac — 2017-2021 – Numeric Citizen Blog”) and bought an M1 Mac mini shortly after it came out on the market. I wrote a must-read article on how to migrate Adobe Lightroom Classic from one Mac to another. A few months later, I got an M1 MacBook Air. Both of these machines are simply incredibly mighty.

Miscellaneous

I’m still using Unsplash for selecting photos for addition to my content when it makes sense. I contribute from time to time, and that ok. I’m not investing much time in selecting photo content for publication on Unsplash. Sometimes, less is more.

I used to have an Instagram account (The Perfect Imperfctions) and mostly stopped posting on it. Time is a finite resource, and I have to make choices on where I spend my time creating new and meaningful content. One thing is for sure, Instagram is not what it used to be for photography lovers like me.

Concluding words

My photography workflow is constantly changing but maybe not as often as my blogger workflow. It has been more than two years since my last workflow update, and a lot has changed in two years. I don’t see major changes in the future, as I’d like to keep things a bit more stable for now and use my creativity to make good use of my toolset.

Saving Plausible Analytics for Blot.im

The following screenshot was taken from the Plausible Analytics dashboard. It displays the analytics for Numeric Citizen I/O before being shut down for good. Plausible Analytics isn’t supported on Craft website, but since I’m a Craft Business Plan subscriber, I got some analytics. I’ll be able to compare overtime if Craft website is correctly reachable from Google.

This Blog Is Transitioning to Craft-Based Hosting Soon

In the coming days, this blog will be transitioning to a Craft-based hosting solution. As you probably already know, I’m a big fan of Craft (see my YouTube videos here), and a proof-of-concept was running (see: https://world.numericcitizen.io/meta) for a while, and I’m happy with the results. It’s time to move forward.

Why This Change

As a cost-cutting measure and workflow simplification desire, I’ll cancel my subscription to Blot.im and fully focus on Craft as the hosting solution. Craft, when used with the Business Plan subscription tier, proves to be an effective solution for hosting simple websites like this one.

The consequence of this move is that I’ll no longer rely on GIT and Nova (a great GIT client on macOS) to to my publishing. While I learned a few things related to GIT with Blot.im, I need to move forward with a less time-consuming solution.

What You Need To Know

The way Craft hosting is working, I’ll have to make some changes for the domain name to points to the right place. The actual website under Craft is already hosted behind the following URL: https://world.numericcitizen.io/meta. Links like https://numericcitizen.io should be pointing to the new destination URL. I added a domain forwarding rule in GoDaddy DNS so this should happen automatically.

Please note that, unfortunately, Craft website doesn’t support RSS feeds. So, consider removing your RSS feed subscription from your RSS reader app. I don’t have a way to know how many readers are coming here through the RSS feed. This is sad, and I hope not too many readers will be impacted by this change. Please keep coming and visit my website for new and updated content.

I’m also happy to report that Google well indexes Numeric Citizen I/O under Craft at the time of this writing. You’ll always be able to find this blog. Also, recent content will be marked as such using Craft “Focus” box option coupled with a 🆕 emoji.

Looking Forward

Since publishing content in Craft is super easy and frictionless, expect more updates in the future. The goals of this website stay the same: to share my experience with my content creator tools and services. I hope that you learn something new when you visit my website.

Making YouTubes Videos - Observations & Notes

I’ve been making videos since early June of 2022. I wasn’t destined to produce content for YouTube as I’m more of a “written words” type of guy. So far, I have made 18 videos totalling more than two hours and a half of viewing time. Along the way of producing those videos, I learned a lot, and at this point, I feel pretty satisfied with my workflow. Here are my gathered observations and notes about my endeavour.

  • Craft is a great application for helping me stay organized and support my video creation workflow. I’m using a template for each new video with things to do, research notes, documentation, video script, and post-process steps are all part of the template. I also maintain a table of past and future videos. I’m very happy with Craft in that respect.
  • I did learn a few things about Craft along the way of producing these videos, for example, while preparing the video about explaining the differences between a document and a page in Craft, I learned that dragging a page to the navigation pane on the left portion of Craft main window, the page gets converted to a document.
  • As much as I love my M1 MacBook Air, exporting videos using ScreenFlow can take up to an hour. It’s the use case that makes me wish I had a more powerful MacBook Pro.
  • At Episode 15, I decided to use an external 1TB SanDisk SSD drive to store all my past and present episodes instead of my MacBook air internal drive. This way, I can plug the drive on my M1 Mac mini when I’m ready to export a finished video. Remember that a MacBook Air has no fan, and after 10 or 15 minutes of intensive use, the Mac will throttle down the CPU to prevent overheating. There is no such thing on the Mac mini; the CPU can run at max power for as long as needed, shortening the video rendering time.

  • Having an external drive to store my videos also enabled me to use my Mac mini which uses an Apple Studio Display which brings much more space to work with while doing video editing.

  • Doing the video montage on the Apple Studio Display helps a lot and helps me reduce the time it takes to create a new rendering.
  • A typical folder containing a recorded episode contains the Screenflow document, the episode header image in full and lower resolution and the resulting .MP4 video file, ready for upload in YouTube Studio.
  • Speaking of Screenflow: it’s a great application, but it is afflicted with a few bugs here and there. Updates to fix those are slow in coming. At some point, I contemplated the idea of switching to Final Cut Pro but doing so would still require me to keep Screenflow. So I’m sticking to it. Oh and I don’t like iMovie. Maybe I should look back at LumaFusion? But I don’t want to do production on the iPad.
  • With each video, I’m perfecting something in my process or in the final product. My best montage can be found in Craft Doesn’t Need to be Notion and “Learn the Differences Between Documents and Pages.” I’m recording with a 4K Logitech Brio webcam, but I’m planning to use the Opal C1 webcam when the software gets more mature, and bugs are fixed. I’ll update this post after putting it to work and compare it with the Logitech.
  • It took me a while to understand how chapters on YouTube work. Publishing from within Screenflow doesn’t export chapter markers (another Screenflow bug?). To get my markers exported, I need to first export them to an .MP4 file, then manually upload them to YouTube. That’s annoying.
  • Google, unsurprisingly, offers a comprehensive plethora of analytics. It’s really a rabbit hole for those like me who love numbers. So far, I’m happy with the numbers, except for people retention. Surprisingly, people don’t stick around for a long time at my videos. Is my content that bad? Is this a major trend on YouTube or something that is closely tied to my content? Looking at my comments and likes ratio, these are vastly positive and aren’t indicating a problem with the content and the visual quality of my work. The retention time tends to increase as I produce longer videos.
  • It makes a noticeable difference when posting a new video is coupled with a post on Reddit, Circle and Slack, as well as Buffer on Twitter.
  • Being active on Reddit, Slack and Circle helps a lot to increase awareness about my videos, and I’m getting many new subscribers each day. On average, I’m getting about three new subscribers per day, which could mean that by the end of my first year of publishing content on YouTube, I could reach close to 1000 subscribers. This looks unrealistic. If I ever get past 500 subscribers, I’ll be happy.
  • When I’m referring to one of my blog articles in the episode notes, I do get visitors. YouTube seems a great way to help grow visitor traffic.
  • According to my Linktr.ee analytics, I can see positive impacts on visitors and conversion rates.
  • Credibility seems to be building over time as I’m posting on a regular basis new content. I’m getting a score of close to a 100% likes ratio, which is a good indication that I’m doing good, but is this sustainable?
  • I don’t pay too much attention to time release timing of a new video. YouTube processing into 4K takes forever. I tend to release a new video on the day after it has been uploaded and transcoded by the YouTube back-end.
  • Most popular video: “Planning my week ahead using Craft Daily Notes.“ People are looking for productivity hacks, and I should probably do more of these videos in the future.

You can view a behind-the-scenes video here.

I’m Ready to Move This Website to Craft

Numeric Citizen I/O hosted within Craft document.

In recent days, I’ve been working on a proof-of-concept to replicate Numeric Citizen I/O website currently hosted on Blot.im into Craft. I’m happy to report that the main portion of my work is completed. You can have a look at the end results here (Craft link). Now, the only missing part is the support of custom domains and notifications. The former will help mask the Craft URL behind a more user-friendly URL. The latter will let me know when someone is dropping a comment on the website. For the time being, I’ll update both versions in parallel. Enjoy.

On Migrating WordPress Content to Ghost

Moving content from one platform to another isn’t easy. And it shouldn’t be that way.

The problem: I want to migrate a few dozens of posts from my Numeric Citizen Blog to my other website, Numeric Citizen Introspection, hosted on Ghost. Easy, right? Think again. The Ghost migrator plugin doesn’t support posts selection; it’s an all or nothing tool. How can I migrate a subset of my posts in that context? By assigning a specific category to each post, I can use the WordPress export tool to export these posts. Next, those posts can then be imported into an empty WordPress instance. From there, I could use the Ghost Migrator plugin. The issue is that I don’t have an empty WordPress instance sitting idle. Using WordPress.com, I cannot install the plugin in a free instance (it’s part of a Business plan, which I subscribe to for my main blog). The solution, was to use my Synology NAS to install an empty WordPress instance locally and proceed from there. Let’s see what the workflow looks like.

1. Turn off post update in the WP to Buffer Pro plugin to prevent flooding your Buffer queue
2. On the source WordPress instance, update posts category that you want to export
3. Install the “Export media with selected content” plugin (which is needed to export images as well as text content)
4. Export content to an XML file with the plugin
5. Install WordPress on Synology NAS with all required dependancies
6. Configure a WordPress website that will be used to host exported content in transit to Ghost
7. Install “Export media with selected content” in Synology WordPress instance (not really required)
8. Install the Ghost Migrator plugin
9. Delete the default post and unneeded page from the WordPress instance, as well as any images from the media library.
10. For each post to export, add the export category of your choice (in my case it was “PhotoLegend”.)
11. Export posts using these options from the WordPress Tools menu

WordPress export with selected content plugin in action.

12. Switch to the WordPress instance running on the Synology NAS
13. Select Import from the Tools menu
14. Select the XML file created from the Export step earlier
15. Set the author for the imported posts

WordPress import plugin in action.

16. Set the Download and import file attachments to bring in images
17. Click Submit and wait for the process to complete (it takes some time, depending on the number of posts and images to import)
18. Verify if all posts are listed in the Posts section (check creation date, author, etc.)
19. Check for Media Library to verify if images are imported
20. Open a few posts to see if content is correctly formatted
21. Edit posts with back links or other elements that need to be updated before importing content into Ghost
22. Edit tags according to the destination website requirements
23. Edit post slug and post title according to destination website requirements
24. Export using Ghost Migrator plugin, select the JSON format since ZipArchive module isn’t installed with this version of WordPress and PHP

Ghost Migrator plugin is pretty limited in functionality.

25. Import JSON file created in the previous step
26. Check for imported posts issues. This is where I hit the wall. Missing photos, content imported as HTML blocs, etc. Not great at all.

Images are missing in imported post.

Posts from WordPress are imported in HTML block in Ghost which is not good.

27. Turn back on the WP to Buffer Pro Post Update option

This workflow doesn’t meet the goal of migrating WordPress content to Ghost. I ended up deleting the posts on the source WordPress instance and kept a copy of them on my Synology instead. I don’t know what I’ll do eventually with these “archived” posts.

Observations

Some observations are in order. This whole story brought many observations that I think you should consider if you’re attempting something similar.

  • The Ghost Migrator plugin is very limited, which make it hard to build an optimal migration workflow.
  • Images migration is close to impossible or very unreliable, forcing to use a manual export and import process.
  • Image optimization plugins on WordPress could make the migration harder than necessary.
  • Website optimization plugins on WordPress could add tags that are probably hindering the migration process.
  • Ghost import feature is still a work in progress can there is no way to select which post to import after reading the JSON file.
  • Testing the migration with a single post would most likely help identify issues faster, instead of importing all the content on the first try.
  • It doesn’t help to convert the WordPress post to use the block editor before exporting the content.
  • Migration efforts are time-consuming, making sure the content still has value to your reader is a good idea. I ended up deleting my 23 posts after spending hours of migration efforts. The positive side of this story is that I learned quite a lot.
  • Even if I couldn’t use the ZIP file for the Ghost Migrator plugin, I don’t think it would have made a difference in the migration quality. I tried to add ZIP Archive to the PHP installation, but the WordPress installation within my Synology NAS is hard to customize. After spending a few hours trying, I dropped the ball.
  • Data portability is really an issue these days. Even with export or import plugins exist, there are other problems that are inherent to each platform or CMS.

One thing that I gained from this experience is that by using WordPress on my Synology NAS, I can export content from my online WordPress to my Synology NAS for archiving purposes. That’s cool. Other than that, the problem of data mobility across content platform is real.

My Blogger Workflow as of 2021-12

My previous blogger workflow update was in March 2021. Quite many things have happened since then. It’s time for another update. Buckle up because this is a big one, and enjoy the ride!

My blogger workflow as of 2021-12.

What’s in

For 2021, I was expecting a year without many changes to my blogger workflow, and yet, I was in for quite a few surprises.

  • Probably some of the most important additions this year are Toggl, Timery, and Focused Work to track my time while creating content (consider bookmarking and reading “Why and How I’m Tracking Time With Toggl” if you want to know all the details.) Tracking my time does take some time, but I like the results.
  • Hello Ghost (again)! I started experimenting with Ghost during the 14-day trial period, during which all features were available for testing. I started building automation with the Zapier integration. After the trial period ended, the integration with Zapier stopped working for some reason. I quickly found out that many features like custom themes, custom integrations, and commenting support are only available with certain subscription tiers. Commenting on each blog post isn’t available by default unless I’m on the Creator tier and customize one of the provided themes. To use Commento, I needed an API key, as well as a custom theme and a custom integration. And moreover, a custom version of Casper with some script invocation was added to enable Commento integration. Forking such a built-in theme requires staying in sync with the official theme, as Ghost updates them from time to time to benefit from all Ghost’s additions. Finally, I visited Google Search Console to add my Ghost website for better SEO management and optimizations. I became a subscriber at the entry-level tier for $9 per month, but I quickly realized that the $25 was the one I needed (consider bookmarking and reading “Moving From Substack to Ghost–My Experience” for more details.)
  • iPadOS 15 introduced support for Safari extensions. Working on the iPad now feels less and less a compromise, as Grammarly support and many other extensions are now available. For people depending on the iPad, it is a much-welcomed addition. Unexpectedly, in 2021, my workflow shifted towards the MacBook Air (read “Coming Out of a Rabbit Hole and Buying Two MacBook Air”).
  • Pocket made a comeback in addition to Readwise (consider bookmarking and read “Instapaper vs Pocket — Which Read Later Service Is Better for Me”). Pocket is well-known and doesn’t need much introduction. According to Readwise website: “Readwise makes it easy to revisit and learn from your ebook & article highlights.” Resurfacing previously highlighted text snippets is fun and helps build a lasting memory of past readings. I added Readwise as a source to my weekly newsletter built using Mailbrew.
  • Using the Readwise sharing feature to repost quotes on Twitter is handy. I don’t use it too often, though.

Sharing a Readwise highlight.

  • WordPress plugin: I’m using the paid version of “WB to Buffer” for reposting previously published posts to Buffer. With another WordPress plugin named “Feedzy” it imports RSS feeds from Substack and Microblog and creates “Also on my …” type of blog posts automatically. It didn’t generate much traction and added too much noise to my original content feed. This was disabled after a few months when I moved out of Substack.
  • I unexpectedly started using Matter when Matter officially became public. Matter seems to have gained some traction over Pocket as the best read-later service. Compared to Pocket, it creates great link posts that can be saved or shared online, just like Readwise and Pocket.
  • I became a subscriber of Typefully (typefully.com), a web application for writing threads on Twitter. Some features of Typefully are similar to Buffer’s, like being able to schedule tweets. I use it to write threads to complement some of my articles. The latest example of things to watch in 2022. Finally, Typefully brings great engagement analytics.

Typefully analytics.

What’s out

  • My experience with HEY World didn’t last long. I’ve been moving out of HEY World to go to Substack for my Friday Notes* and Photo Legend* Series (consider bookmarking and reading “Migrating My Content From Hey World to Substack”). I can say the same thing about my Substack experience. These services, while attractive, didn’t stick in my workflow.
  • HEY is no longer on the workflow diagram. HEY doesn’t really contribute to my blogger workflow. Most of my readings don’t happen there anyway, even if HEY provides newsletters dedicated feed, one of the tent pole features of the mail client.
  • As mentioned earlier, Substack is out. The popularity of a platform doesn’t guarantee the popularity of your content.
  • I closed my Telegram account. Read more here to learn why. I’m contemplating Signals instead.
  • WordPress Plugin: Coblock was disabled to remove overhead in webpage processing. It didn’t make a difference, though.

In progress

  • I do spend more time maintaining my digital garden in Craft all year long. You can find a lot of stuff in there.
  • I’m still trying to figure out how to use Apple’s Quick Notes feature in iPadOS 15 and macOS Monterey. I may end up having no use for this after all, which is too bad because, on paper, the idea is cool.
  • I’m always thinking about using Apple’s Reminders in my workflow. Reminders have improved quite a lot over the years, but occasionally, I think Craft could take over if table support was better (sorting, tagging, etc.). The more things I’ll do with Craft, the more synergy it creates. I’ll watch Craft’s evolution in 2022, and maybe make a move.

Things to improve

  • Adding text clipping in Craft would be so helpful. There are shortcuts that work with Craft that do just that, but I don’t find the experience very satisfying.
  • Speaking of Apple’s Shortcuts, I do find more use cases for them to speed up a few key tasks, like setting up my work session after logging into my account on macOS.
  • Templates in Craft to kickstart the creation of a new article would be very handy. It is expected in 2022, in an upcoming update in 2022 or via an extension.
  • As much as I would like to see the addition of tags in Craft, implementing this feature could be tricky. Where should we be able to tag things? In a page’s properties, inline in the page’s content?
  • I have to work on my reading workflow and decide what I’m going to do with Pocket, Readwise and Matter. Pocket will probably go as it is entirely covered with Matter.

Miscellaneous

  • My usage of ** Craft ** has significantly increased this year. It is becoming my second brain (Fun fact: find out the name of my MacBook Air). Lately, I decided to use the Craft calendaring feature to prepare a weekly plan containing my content creation objectives. As the week progresses, I keep it up-to-date and check items off the list. It’s a satisfying experience, trust me.
  • I’m still using Notion to keep my old data and connect Matter to Notion to save my reading highlights automatically. As soon as a Craft extension allows me to pump my data out of Notion, I might be done with Notion once and for all. Notion is not shown on my workflow diagram but will be in an upcoming post covering my reading workflow.
  • Twitter Revue: I had a Revue account before Twitter bought them. Now that it is integrated into their platform, I experimented with it (read a sample issue here). I love Twitter Revue, but I have yet to find a unique and useful use case for it. I currently have five subscribers.
  • Furthermore, I should consider closing my Flipboard account. I never go there; it’s not what it used to be, and I don’t get any traffic from this platform.
  • Google News, where I cross-post my main blog content, could also go down the drain. I don’t get any traction there.
  • Finally, Tumblr is another place where I cross-post content. Tumblr has become a ghost town in recent years, and it doesn’t help at all. Even if cross-posting is done automatically using WordPress’ built-in feature, I should consider stopping using this platform.
  • In my previous workflow update, I considered moving my Photo Legend Series to Hey, which I did for a short while. Now, it is hosted on Ghost, along with my Friday Notes Series and monthly newsletter. I like consolidating stuff sporadically.
  • Since getting a MacBook Air, my iPad Pro usage significantly dropped. The Mac is the power user tool. I cannot be as productive on an iPad.
  • I worked a lot on my WordPress blog to improve its score on Google’s PageSpeed Insights, as documented here. Did it make a difference? According to my blog visitor statistics, the answer is no. Here is a strange thing: if I run PageSpeed tests twice in a row, the final score is quite different. Usually, the second try gives much better results. How much trust should I put in these results? Another observation: my score for this blog, a static website, is the worst. Is Blot hosted on a low-end performance tier in the cloud?
  • I’ve been using Commento with Blot to add comments support on this blog. I never got a single comment! It’s a high price to pay for a service that nobody takes advantage of. Maybe it will be a better fit with my newsletter website on Ghost? Time will tell.
  • IFTTT still plays an important role in my publishing workflow as it works with Buffer to help me control the cross-posting flow. Each day, I spend some time managing the Buffer queue to spread out posts to be published. I also use IFTTT to cross-post anything I post on Reddit to my Twitter channel on Buffer. Buffer has a new calendar view that helps you see a timeline overview of all future publishing. Buffer isn’t cheap, but I like what it does for me. Cross-posting content does help create traffic and improves engagement.

Well, that was a long one. I want to walk you through my reading workflow for an upcoming article. I read a lot of stuff online, and many applications and services are involved here. Reading is the source of my inspiration for most of my work as a content creator. I think there are some interesting things to write about. Stay tuned, and see you in 2022.

Moving From Substack to Ghost — My Experience

Digital nomads. The flavour of the day. Looking for a better digital experience? Every reason is good to move from one place to another in the digital world. It’s about having some fun.

I recently came across this blog post from Greg Morris where he writes: “I look at blog designs like Birchtree.me* and think to myself “I want a blog like that” and then go out and try to build one.”*. I often tell myself the exact same thing. But then, not long after, I came across another blog post , but this time by Andy Nicolaides writing on his blog, The Dent:

“I’ve just gone through yet another blog migration, moving from Micro.Blog to Ghost (again). I was happily posting to Ghost a year or so ago, saw a nice looking blog on Micro.blog and jumped ship. I then sat there, not posting for half a year, before I saw Greg Morris’ updated site over on Ghost and my blog envy kicked off again. Let’s not even mention how incredible Matt Birchler’s Birchtree looks right now!”

Ghost has always been a source of curiosity for me, coming back to it from time to time to look and see how it is evolving. Following those two blog posts, I got back to one of my articles about a past experience with Ghost for photo sharing. At the time, it didn’t go well. Furthermore, I started using Substack to host my newsletter for unknown or clearly defined reasons. So, this time, I returned to Ghost to look at it as an alternative to Substack. Why? After all, I was quite happy with Substack. And yet… If I look at Substack and Ghost, there are many things that made me dubious of my choices.

  • I don’t get any subscribers from Substack Discovery because Substack is very popular these days.
  • I prefer the way Ghost handles the publishing process and the distinction between having a CMS and a newsletters publishing platform within the same platform.
  • Ghost’s API supports text editors like Ulysses, which would help speed up the process of creating newsletter issues. By working directly with Ulysses, each new issue would be much easier to put together, as Ulysses supports templates, while Substack doesn’t. Since the basic structure of my newsletter stays the same each month, using a template makes perfect sense.
  • Substack offers some visual customization options, but they are quite limited. On the other hand, Ghost offers themes that help make a more personal-looking website.
  • Ghost supports Unsplash, which is a must for me.
  • Ghost provides better support for photos than in Substack with photo galleries. This could prove to be useful for my photo legend series, among other use cases.
  • Integration of plausible analytics is easy, but it is not possible with Substack. Another must-have for me.
  • Stripe integration, which I already use for Medium payments, if I ever choose to add a paid tier to my newsletter.
  • Commenting is possible by tweaking the theme and adding some integration code. Yet, I wish there was a better and easier way to add this to a website. In the future, I could try to set up Commento for comments using this procedure. Ghost theme customization is available only on mid-tier and up-paid plans. This feature could replace the thread feature available on Substack.
  • Good integration with Buffer via Zapier. IFTTT integration is possible only via RSS feeds. As a paying member of IFTTT, I chose the latter.
  • Better RSS feeds support posts, tags, and pages just by adding /RSS to any URL. On top of that, it is possible to customize the webpage referring to a tag by adding a header image and a description, just like here for the Photo Legend Series.
  • Selecting a fully featured theme is challenging, as Ghost doesn’t provide an easy way to filter themes by supported features.
  • I’ll leave my Substack account active for the Substack Reader feature.
  • Easy migration path from Substack to Ghost using this procedure.
  • Should I import my content? After a short test run using the 14-day evaluation period, it was clear that I had to.

How Ghost could be improved for me?

One of the Ghost editor’s most powerful and useful features is the ability to create and reuse content snippets. If you’ve ever used an email client with saved replies, this will be immediately intuitive.

  • Integration features and custom themes for the entry-level paid plan (access to the API admin token).
  • A customizable dashboard.
  • A native client on Mac or iPad.

Steps to move from Substack to Ghost

  1. I exported my data from Substack, which took less than 10 minutes to complete. Substack makes this super easy.

  2. Import my subscribers list into Ghost’s members list.

  3. Download Xcode from the Mac App Store and launch it for default configuration (required for the next step).

  4. Install Homebrew to be able to install NPM modules later (importing content into Ghost requires Node.js and NPM modules): https://treehouse.github.io/installation-guides/mac/homebrew

  5. Install Node.js and NPM: https://treehouse.github.io/installation-guides/mac/node-mac.html

  6. Follow this procedure to import articles into Ghost CMS. This is done via the command line.

    `migrate substack numericcitizen-export-2021-11-14-m9k19kr99s/posts.csv –readPosts numericcitizen-export-2021-11-14-m9k19kr99s/posts –url https://numericcitizen.substack.com –useMetaImage –useMetaAuthor –drafts false

    `A lot of my decision to switch depended on the success of this step. If content was successfully imported without too much required tweaks, I would consider this a success and go with the next steps.

  7. Import the created zip file (the migrate command generated a 230 MB zip file ready to import). This file was then imported using this procedure.

  8. Configure site pages and tags Once the import is complete and without error.

  9. Review imported content and set tags according to each post’s content. That step was tedious but was mandatory to recreate the same content structure currently on my Substack website.

  10. Configure and write a contact page so that users can click from the bottom portion of my Ghost website to contact me.

  11. Connect my Ghost account to my Stripe account just in case, even though my newsletter is free—you never know!

  12. Configure Ulysses publishing options to publish content from within the application to Ghost. After all, this was one of the main reasons I switched from Substack to Ghost, right?

  13. Do a test run with a fake article and check RSS feed content generation.

  14. Configure the support and reply-to email addresses.

  15. Set up Plausible analytics and add it to my Ghost website using the customization feature in the header section.

  16. Update all my IFTTT automations for cross-posting to Twitter via Buffer when a newsletter issue comes out.

  17. For mid-tier paid plans only: Add Twitter Revue new sign-up to Ghost via Zapier (this requires the Admin API token, which is not available in the entry-level paid tier).

  18. For mid-tier paid plans only: Add Ghost cross-posting to Buffer via Zapier (this requires the Admin API token unavailable in the entry-level paid tier.)

It took me about a day of work to accomplish all this, from the trigger to the final announcement post on Substack. I’m super happy with the end results.

Migrating My Content From HEY World to Substack

Yesterday, I put an end to my HEY World experiment. After making the call, I wanted to keep my content and migrate it to Substack. So, I tried the Substack RSS feed import feature, but it wasn’t working. As shown in the following screenshot, the error wasn’t explicit enough to pinpoint the cause of the problem.

Substack's RSS feed import couldn't see my HEY World content

I had 23 posts to import, which was not a big deal, but I preferred not to move my content manually. Trying different variations of the URL didn’t help. Substack wouldn’t detect any feeds from HEY World. Here is my solution.

HEY World uses ATOM RSS feed format. I thought Substack couldn’t parse those. The idea was to transform the ATOM RSS feed into something else. After googling for a solution, I remembered about RSSMix (this service is no longer available and FeedPress is way better). This free web service enables merging many feeds into one. I use it to merge all my personal RSS feeds into a single one to build a publishing timeline. It’s pretty cool1. For my HEY World content migration, I took the ATOM RSS feed with another one and merged the content2. The end result is another feed, but this time in XML format. I went to Substack again, and sure enough, the resulting feed could be imported. After the import was completed, all I had to do was delete posts from the second feed content which wasn’t part of HEY World3. Simple as that.

Update #1: 2022-05-22 : Since the publication of this article, I moved (again) my newsletter to Ghost. Update #2: 2024-06-15 : Replace RSSmix with FeedPress as the former is no longer available


  1. I think I should write about it in a different post. ↩︎

  2. RSSMix requires at least two RSS feeds to work. I chose one of mine with little content associated with it. ↩︎

  3. The one thing I would have liked from Substack was a way to select each post individually before hitting the Import button. ↩︎

Bye Bye Universe — It Was a Nice Ride

Nearly a year ago, I introduced my Numeric Citizen Visual Space, a website made with Universe, a website creation application running on iPhone, iPad and macOS. This space never really took off and never attracted traffic, probably because of its lack of a social network dimension. In retrospect, this was an experiment more than anything else. Universe is a special application where websites are built using a visual block metaphor. There is nothing like it. I was seduced by it and forgot the goal of building a web presence to expose my urban exploration photography work. Eventually, I stopped updating the website. I decided to cancel my subscription ($159.99 CAN per year, which is rather expensive if you ask me). If there was a free tier, I would probably keep it, but that’s not the case.

I’m still looking for a better photo sharing solution besides the usual suspects. Glass? Bokeh? Both of these are still under wrap, and their future is uncertain. As I’m waiting, I decided to “park” my work on a lesser-known place called “Ello”. Ello is a lot like Tumblr. It’s free and does the job for now.

Update 2024-06-06: Ello and Bokeh are no longer being developed and were abandoned.