As of tonight, I’ve now completed the final stage of transitioning my blog from
Ghost to Hugo.
As you may have known, my blog has been powered by Ghost for a few years.
It’s definitely served me well. However, a while ago I started to like the idea
of static sites. Seeing as my blog is essentially a list of static posts, it
felt a bit weird that the pages were being served dynamically. So, I started
on the journey of moving to Hugo.
It took a bit of work to adapt my existing theme to work with Hugo’s template
system. But I managed to get it pretty similar, while also adding a few
improvements at the same time.1
Of course, being a static site, pages now load super fast, and they’re
extremely lightweight. But that’s not the only good thing about using Hugo.
It’s also super easy to host other static pages alongside the source Markdown
post files. This means I can build mini-sites for my apps, and keep them
managed within my blog. I can control the structure of the site better, either
by using categories/tags or by structuring the source files in the way I want
them to be generated. And another great one, I can now create custom pages and
templates. For example, I built a custom archive page for all of the posts
on the blog, and a few extras that as a bit different for essays and
In the early version of this new Hugo blog, I had it being deployed to
a Digital Ocean app via a GitHub action that was triggered after pushing new
posts. But, that didn’t allow me full control of the VM it was running from, so
I decided to switch to a droplet (VM), and have built my own minimal
Obviously, Hugo is installed, but apart from that the only other things I had
to install was nginx and certbot. So very minimal. I was wondering how I’d
manage the deployment, because I still wanted to have the site automatically
rebuild after pushing my changes. Luckily, I found a guide by Josh
Hausotter that shows you how to configure a remote repository on your
Digital Ocean droplet and a “post receive” action that runs a script whenever
changes are received to generate the static files and move them to the correct
directory. I honestly never thought about using git this way.
As for how I write and publish my posts from my own machine. I do that using
Neovim on my Mac, and then just pushing to the remote repository. Neovim
might not be the most trendy tool for writers, but I find it works for me, and
I also use it for writing code, so I’m pretty comfortable with the keybinds.
You may be wondering, what does this mean for you? Do you need to change
anything? Well, in theory, no. The posts are now stored as static html files,
however I have configured nginx for these to work without the extension, and
the filenames/slugs haven’t changed. Technically, the RSS feed is now
different. Hugo generates the RSS feed in an index.xml file at the base of
the site, which you can find here. However, I have set up directs for
/feed and /rss, so you shouldn’t need to do anything.
Hopefully, this change will go by mostly unnoticed. But if you do notice
something odd, you know where to find me. (Links are at the bottom of the
As you may have seen, last night I wrote about my experience using Arc Browser. I then submitted this blog post to Hacker News. Usually this gets a tiny bit of attention. But this time, it managed to get on to the front page. The highest I saw it was at 12, although the bulk of the views were once I went to sleep, so who knows, it could have been higher.
Nevertheless, it’s been common to write a post to analyse the impact of being on the Hacker News front page, so since it’s now dropped to the second page after around 14 hours, I thought I’d write about the impact it had.
How much attention did it attract?
I was awake for just over an hour after the post hit the front page, and I think it had about 200 views in that time. In my head, it wasn’t going to get much higher than that. So I was rather surprised when I looked at the analytics this morning.
Overall, the page got 4,272 views, and as you can see above, over 75% of this came from Hacker News. And I’d argue that probably a lot more also came from related aggregators and websites.
On Hacker News, the post has (at this moment) reached 92 points and has received 72 comments. Surprisingly, the comments were not as bad as I had imagined. I know how comment threads of Hacker News can get, and while some were rather odd, I was happy with how the discussion went.
Did it reflect on the ad revenue?
I’m not afraid to say that I don’t make much revenue from the single ad at the bottom of the website. So I’ll happily share the impact that it had on the revenue.
As you can see, the average day doesn’t go above $1. However, with the suddent increase in page views, and a few apparent clicks, the revenue certainly jumped. I think I can estimate around $8 in earnings from that single post.
How did the website hold up?
One thing I had definitely heard about being on Hacker News was that it the traffic could bring down your website. Fortunately for me, this didn’t happen.
This blog is a self-hosted Ghost blog, and it’s hosted on a relatively small virtual server on Digital Ocean. It has a single CPU and just 2 GB memory. And it seemed to cope just fine.
Digital Ocean can provide a nice graph of the CPU usage, and you can see it never even reached 40%. As for the memory, I was monitoring this during the early peak via htop, and I can’t say I saw the total memory usage even reach 1 GB. Maybe this isn’t great and it should handle more. Who knows. All I can say is that it was clearly enough for me. And this is for only just $10/month or so.
Overall, I’m pretty surprised with the fact that it reached the front page of Hacker News, let along how well the impact was. And because of the reaction, I’m going to try to analyse if there’s anything about this post that I can use again in the future. For example, a similar topic, post length, etc.
Now I’m intruiged to see if I can get a post even higher on the front page. Maybe even break the top #10?
As you may or may not know, this blog runs on Ghost. Well, Ghost has just added support for comments, so I decided to add them to my blog.
I’ve went through various phases in the past where I’ve had comments enabled/disabled on my blog, but I think with Ghost’s implementation, it shouldn’t have too many downsides.
The main factor being that you need to be a member to write a comment. Not a paid member. But you will need to sign up with a name and email address to write any comments.
However, I’m not going to think twice about removing comments or even disabling the feature entirely, if the conversations are irrelevant, toxic, or attract spam.
If you want to write a comment on a post, then you’ll see a “Member discussion” section at the bottom of each post page (not on the main list of posts). You’ll either get a text field to write a comment, or they’ll be a link to either sign up for a free account, or to log in.
So starting from now, if you want to reply a to a post I’ve written, or maybe you have some extra information or context, please feel free to leave a comment.
More Thoughts and Links on Instagram’s Switch to Focus on Video #
Instagram will walk back some recent changes to the product following a week of mounting criticism, the company said today. A test version of the app that opened to full-screen photos and videos will be phased out over the next one to two weeks, and Instagram will also reduce the number of recommended posts in the app as it works to improve its algorithms.“I’m glad we took a risk — if we’re not failing every once in a while, we’re not thinking big enough or bold enough,” Instagram chief Adam Mosseri said in an interview. “But we definitely need to take a big step back and regroup. [When] we’ve learned a lot, then we come back with some sort of new idea or iteration. So we’re going to work through that.”The changes come amid growing user frustration over a series of changes to Instagram designed to help it better compete with TikTok and navigate the broader shift in user behavior away from posting static photos toward watching more video.
[…] look at the past few weeks of Meta news and it seems like the company has zero idea of what to do or why people use its products. It made drastic unlikable changes to Instagram; its leadership is panicking over TikTok; its latest public demonstration of its metaverse future is embarrassing and its educational value is less justified than the VR headset in a thirty year old Simpsons clip. Do these decisions look like the product of a focused company that has near-term goals for its future and innovative ideas beyond that? I am not saying Meta is dead in the water, but it sure looks like it is struggling to define what its future looks like for the next few years.
I must admit, when I wrote my thoughts yesterday about Instagram, I wasn’t including the context of it being a part of Meta. And I think a lot of the problems probably stem from the constant engagement chasing and a seeming anxiety about every other platform on the internet.
So, where does this leave photos. As a photographer, I wholeheartedly believe that Meta does not give a damn about photos. It is a legacy which they would get rid of if they could. All the surrounding words were half-hearted and stale. Using words like “continuing to support photos” without actually showing any excitement or reassurances to those that are left out.[..] Adam pointed out that even if they don’t change anything else, more and more videos are being shared and that’s what the users like. This may be the case, but you only have to look at the volume of users that have to post videos to get the engagement they used to. My evidence is of course anecdotal, but I have not met a simple photographer that posts a Reel apart from that they have to, or they lose work.
It’s probably obvious, but I would say that photographers will be some of the first people to switch to another platform. Especially since there’s now a great platform for photographers in Glass. However, until there is a new Instagram-like platform where everyone can share and view photos, I would expect at least some kind of presence on Instagram would be needed for photographers trying to gain more exposure and potential clients.
All this said, I think that people see Instagram and think their goal is to be the best place for sharing photos online, but I think that their ultimate goal is to be the place people spend the most time consuming visual content, and they will chase whatever trends they need to stave off competitors who challenge them. They started with photos, but their hart clearly isn’t in them anymore.If you want to use a social photography app, then Glass is the current leader in my book.
I think this is the main problem. Instagram just isn’t a photo-sharing platform anymore. You could say it’s evolved, although I’d argue that it’s simply reacting to every other online social platform, but nevertheless, it’s changing to a more video-focussed platform. And while photographers won’t like that, given what Instagram used to be, it’s not as if we’re being forced to stay.
I’ve been thinking about my writing recently, but from a different perspective to normal. This time thinking about the longer-term life of some of the things I’ve written. Not the quick link posts, or the product reviews, or anything like that, but more of the longer-form pieces that I’ve really put thought into.
I’m not sure how to best explain them, but if I could choose a few examples that fit into this category, which I’ll be calling “essays”, they would be these:
These all range roughly from the 500 to 1300 word mark. So, it’s not always a certain length. But I would say that what I call an essay, is a piece of writing that you could print out and have it stand on its own, without needing to be supported by the context of my blog.
I’ve gone through my blog and found 25 posts that I feel fit this category, and organised them with the “Essay” tag, which is available to read individually, and has been added to the main navigation bar at the top.
I’m mainly thinking for archival purposes, but the thought of having my writing in book form, especially a physical copy, sounds very appealing.
Maybe those books could be available for others, although I would guess that they would only ever be available digitally. But it’s certainly something I want to look into soon.
The concept that I think would suit my writing best would be a collection of volumes, where perhaps Volume I has X pieces of writing, and then Volume II has the next X pieces of writing, and so on.
I think that’s my first project for 2022. Curating my best writing so far, and making a book. First for myself, but also potentially for others.
Ghost, the blogging platform that this blog runs on, recently received a major update. So I decided that I would update the version of my instance. Mainly because the update’s main focus was adding support for members and email newsletters, which previously have been part of their “labs” section.
I took the necessary precautions, exported the content, even made a complete backup of the base folder. However, I still assumed that it would go well since Ghost has a command-line tool that should take care of everything.
Unfortunately for me, this migration didn’t work. The cause was a failing database migration, which seemed odd to me since this is not something that I have changed. And it turns out; the rollback feature doesn’t support major versions.
The next step was installing a new version of Ghost v3, which is pretty easy if you use the CLI tool. Once that was installed, I restored the content, and it worked as usual.
I was still set on updating to v4, though. So I tried again. This time thinking it will work because I have a completely fresh install. Sadly, the same error occurred. Which meant my only option was to start with a new v4 instance.
Luckily, the import functionality worked with my data, even though it was exported with a previous version. All I had to do was verify that worked, migrated members, configured the email newsletter, and made sure the images were all available. Everything went perfectly this time.
I’ll need to look into the changes more and see if I can make use of anything. One thing I did notice was the excellent new default theme. So maybe I can steal a few things.
While the blog hasn’t visibly changed, this migration did cause one annoyance. As after you set up a Ghost instance, it starts you off with a few default blog posts. So every time I did this, these dummy posts were available in the RSS feed. I think this also meant that a few recent posts were triggered when I did the import. This means, if your RSS reader/service polled for changes during this period, you’ll most likely have a few posts that you can ignore. Sorry about this!
Throughout the many years of having a blog, I’ve tackled the idea of growth in a few different ways. For example, reposting the same content to multiple places in order for it to be viewed more, or taking the one post and sharing on as many social networks as possible, and even attempting to change my content to what the analytics told me that people liked.
My theory behind all of these actions was to try and grow the number of visitors to my blog and to increase the number of people that would read my writing. And in a lot of cases, I wanted readership to go up, because then I would get a higher amount of money from advertising, possibly even end up with sponsorships, and be able to dedicate more time to my writing.
After a while of not exactly getting very far, I decided that it wasn’t worth the effort to try and “grow” my blog. But instead, I should just keep going, sharing a link to Twitter, and possibly one or two more places depending on the content. Because that way, if anyone liked my writing, there’s a chance they might share a link somewhere, and the growth would be more organic and sustainable.
I wrote recently about leaning into your own perspective when writing, and it comes from a similar thought process I had when thinking about growth, and deciding where I want to take this blog in the long term. I essentially took a step back and examined my situation. I wasn’t making any money really on the blog through advertising, not much more than paying for the hosting and domain name. I wasn’t particularly interested in running a blog dedicated to a certain topic or audience. And I started to not care if people liked what I was writing.
That made me think, if money isn’t going to be a significant factor in any decision, and I have no desire to write for a specific audience, then I may as well just write for myself. Then if people like what I write about, then great, and if not then it doesn’t particularly matter. Because if I decide that I want to write for this blog for another 10 years, and the idea of making a living from my blog isn’t realistic, then I think it’s a much better decision to focus on what I want to write about, and my own perspective that I can share. Rather than trying to fit in with everyone else, and create nonsense posts that don’t interest me or anyone else.
So to wrap up, I think my attitude towards growth has evolved from simply wanting a huge audience, to wanting an audience for the benefits of making a living, to just not caring about it at all. That’s not to say I don’t want people to read my writing, I’m just not writing with the goal of gaining more readers. That job is up to the quality of my work alone.
As of right now, this blog has been moved away from the previous subdomain chrishannah.me and simply on chrishannah.me. I’ve wanted to make that switch for a while now, but it didn’t seem worthwhile on its own.
However, along with the domain switch, I’ve migrated the blog from WordPress to Ghost. That won’t matter to most people, and I don’t expect it to either. But basically, it means the blog is much more lightweight, and I can provide a few extra things like estimated reading time, primary tags above the post to help contextualise, and a few other technical things that only I care about. I think WordPress could achieve everything that Ghost can do, but it comes with a lot of baggage.
Anyway, enough of that.
The only thing that has changed from a reader point of view is the new domain (Or lack of subdomain). I have set up 301 redirects, so if you do visit the old URL, you will be redirected to the new version. However, it’s obviously not a permanent solution.
That also means that the old RSS feed will still work, while the redirects are still there. But just to make sure you don’t have any issues, the new RSS feed is: chrishannah.me/feed.
While I’m pretty sure everything has migrated over, and it’s all working fine. If you see anything odd, please let me know.
There are times where I want to write a quick post here on my blog, but either it can be a quick thought, small review, or something that just doesn’t fit within the typical content on this blog. Last year I used to write a lot of this stuff on Micro.blog, but recently I’ve been wanting to move it here, where I can truly say I own my content.
I’ve had a category for “micro posts” on this blog for quite a while now, although it’s not always been very visible. As it stands it’s mostly a collection of Micro.blog posts, around 6 months of me keeping a journal, and some photos. But what I want it to turn into is a place where I write more informally, which is what I’m going to do! So if that sounds like something that interests you, check out the asides section. If you’re really like it, then feel free to subscribe via RSS.
This decision may change in the future, but as of right now, this new section will be separated from the main content on the blog. As in posts won’t appear in the main RSS feed or on the homepage. It certainly feels right to have them excluded from the RSS feed because I appreciate not everyone will want this extra level of commentary from me. But I’m open to the idea to eventually have them somehow fit on to the main section on the website. We’ll see how it goes.
If you read the last issue of my Weekly Links newsletter, you may of seen my comment about my desire to expand the content. With this weeks issue, I’m going to take a step in that direction.
The past issues have simple been a list of links from all over the internet that I find interesting, it’s pretty simple and very minimal. I’m not saying I want to rich newsletter full of embeds, and images, but I’m going to be separating content into sections, which will lead me into including more content in general. For the beginning at least, it will still be a basic email containing hardly any formatting, but loads of links.
The sections that will be included from this week forward are:
On the Blog
What I’m Up To
They’re pretty explanatory, but the basic idea behind the transition is that the simple list of links is a bit unorganised. And some weeks, it’s simply not very long. But I’ve got content that I post on the blog, there’s tons of great videos that I watch, and I’m always working on something random. So why not share it here?
In the future, I want to add a podcast section, because I sure do listen to a lot of those. But adding a list of everything I’ve listened to isn’t good for me or anyone reading it. So maybe this will be my favourite/recommended episodes, and probably will end up being a less regular section. I was thinking every month, but this is a weekly newsletter, so every 4 weeks is a good alternative.
Anyway, you can sign up for the newsletter right now, which means you’ll have access to the past (boring) issues, and one new one which goes out tonight. All issues are usually send out on the Friday evening, but occasionally I’m busy and it gets pushed to Saturday morning.
Also, for the sake of my sanity. I’ll be starting the new issues at #1.