247 comments

[ 2.8 ms ] story [ 277 ms ] thread
(comment deleted)
Is the domain name free too?
This was written assuming you already have a domain. If not, then yes that would be an additional cost.
Not the OP but I own some ab.xy type of domain names and use one of them as my personal gTLD.

It's like having infinite "free" domains (even with the small fee for the base domain.)

But the most important part is the fun of just having an entire namespace at your disposal to create whatever "domain name" in seconds.

Do you mean you can easily spin up foo.ab.xy, bar.ab.xy and baz.ab.xy?
Yep. I recently built a noise generator app and hosted it at noise.ab.xy.

Nothing technically groundbreaking (actually Cloudflare does it automatically for me), but it's a nice quality of life trick.

I'm curious about the pros and cons of Cloudflare pages versus GitHub pages. Given that you're using GH as a repo, would it be simpler to also use it to serve pages?
If you're using cloudflare already then it makes sense, closer to the edge and all that, plus there's integration to make that all very seamless from gh.
I already have several other projects and DNS managed in Cloudflare, so it made sense to keep everything in one place. GitHub Pages would definitely work too.
Where in the process do you integrate your custom domain (ingau.me) ???
I connect the custom domain in the Cloudflare Pages dashboard. Once the site is deployed, you can assign a domain under Pages > Custom Domains, and since I already manage DNS in Cloudflare, it's just a couple of clicks to route it.
https://docs.github.com/en/pages/getting-started-with-github...

> GitHub Pages is not intended for or allowed to be used as a free web-hosting service to run your online business, e-commerce site, or any other website that is primarily directed at either facilitating commercial transactions or providing commercial software as a service (SaaS).

Not finding a similar mention for Cloudflare... commercial sites are fine there?

The way I understand this is not that Github Pages can't be used for commercial purposes, but that it's not OK for something like ecommerce with many users every minute which generates a lot of load?

So a small company could host a static landing page with generic info and "contact us" etc., and that would be fine, I think?

It also mentions that breaking the rules will result in getting a "polite email suggesting ways to reduce load on Github".

So a personal website with a personal blog is ok then.

Curious though how it handles a surge in requests, like from being on the front-page of HN. But many open source projects host their doc pages with Github pages and some of those get a lot of traffic so I'm sure that it's not an issue

GitHub Pages runs everything through a Fastly CDN. You can tell like this:

  curl -i https://simonw.github.io/
I get this:

  HTTP/2 200 
  server: GitHub.com
  content-type: text/html; charset=utf-8
  permissions-policy: interest-cohort=()
  last-modified: Wed, 16 Nov 2022 21:38:29 GMT
  access-control-allow-origin: *
  etag: "63755855-299"
  expires: Wed, 23 Apr 2025 18:20:50 GMT
  cache-control: max-age=600
  x-proxy-cache: MISS
  x-github-request-id: 3D02:22250F:11BEDCA:123BE7A:68092D2A
  accept-ranges: bytes
  age: 0
  date: Wed, 23 Apr 2025 18:10:50 GMT
  via: 1.1 varnish
  x-served-by: cache-pao-kpao1770029-PAO
  x-cache: MISS
  x-cache-hits: 0
  x-timer: S1745431851.518299,VS0,VE110
  vary: Accept-Encoding
  x-fastly-request-id: 0df3187f050552dfde088fae8a6a83e0dde187f5
  content-length: 665
The x-fastly-request-id is the giveaway.
The "front page of HN" has not scaled like the rest of the computing hardware has scaled. The smallest VM you can get serving static content will yawn at the full power of an HN surge. Unless you have a very 200x-era bandwidth limit, or you're trying to be on the front page of HN with a 250MB web page (which does happen), it's not anything to be concerned about anymore.
Very cool. I first setup my blog way back in the 90s and wrote the HTML by hand and used FTP to get it on the server. Then moved to phpslash and slashcode, Drupal and then Wordpress. Probably something else in there too. This setup feels much closer to how I was doing it in the 90s in some ways. It kind of feels like we've come full circle!
Yeah, I’m hoping this kind of setup gets more popular. It’s simple, fast, and gives you real control over your content.
For me it's (neo)vim, 11ty and netlify. I've be using netlify for years before CF launched their worker/pages offering.

I however use CF workers a lot to deploy single-purpose webapps for my personal use.

I have a very similar setup, but I went a step further by writing a custom Obsidian plugin that handles compressing assets / transforming frontmatter / pushing the bundle up to my Github blog repo.

Github has an automated action that then uses Pelican (a python based static site generator) to convert to HTML and deploys it to my VPS where it is served by Caddy.

Makes it very easy to have a WYSIWYG interface, the blog pages look basically identical to Obsidian.

https://mordenstar.com/blog/obsidian-to-pelican-exporter

Pelican static site generator:

https://github.com/getpelican/pelican

Nice! I especially like the automatic compression of assets. It's such a pain to do it manually that I don't bother most of the time. I cross my fingers and hope the reader has a fast internet connection.
Haha yeah I get that. I probably get the most savings from the animation compressor which checks if GIFs are over a certain threshold (> 1mb) and then seamlessly converts to autoplaying muted MP4 files which function nearly identically.

I really wanted to use animated WebP but the iOS decoding is SUPER unreliable often resulting in choppy inconsistent framerates.

One thing I don't do but I know is more common is using <Picture> elements to serve scaled assets depending on if the user is coming from mobile vs desktop.

Depending on what you use for your blog, you might look and see if the SSG has plugins for media optimization. By the time I figured that out, I had already handrolled my own. :p

Upvote for Pelican. I never understood why so many people don't consider it and jump straight to Jekyll/Hugo.
I have largely the same setup but use neovim instead of obsidian.

A friendly tip: you don’t have to populate the metadata yourself and can use ‘hugo new <dir>/<post_name>.md’ to create the file with the metadata.

Nice, didn’t know that. Will try it out, thanks!
VSCode has been good enough for markdown blogging for me. Hugo compiles pages on save so its quick to iterate. The markdown preview plugin brings same experience to misc markdown editing.

No new editors to learn and one gets instant access to copilot etc.

Why would you need copilot for blogging? Isn't the whole appeal of a blog that it's something you, a human created?
Copilot is helpful for handing formatting and repetitive structural stuff. It doesn't need to actually create the content to be useful.
Personally, I’m a lot better at recognizing good writing than producing it, and LLMs are great at being a “calculator for words.”[1] Writing posts became a lot easier once I got an automated editor I could tell to “break up this run-on sentence to make it less confusing” or “rearrange these paragraphs so I introduce concepts before I start using them”. The end result is still the same, but this way I save a lot of time I used to spend glaring at Roget, Strunk, and White.

[1] https://simonwillison.net/2023/Apr/2/calculator-for-words/#c...

I just like keeping all my writing in one place, separate from coding. Obsidian gives me that focused space, and I’ve set it up with a nice font and minimal theme that fits how I like to write.
I have been using this way of blogging for years now and it works perfectly.

I didn't know about Cloudflare pages, thanks for sharing!

I use Jekyll, Github pages and Cloudflare. I use hackmd for editing but Obsidian will work as well.

I profoundly do not understand why one needs Hugo or Jekyll or whatever other generator. Why not write HTML in the first place? It's so absurdly easy and it makes you not depend on external infrastructure at all.

I tried some generators but it was so much more complicated than writing a style sheet and some pages. Maybe for some more complex use-case, okay, I get it, but the author's blog is so minimal and simple.

edit: today I learned people have very strong opinions about static site generators. Good valid reasons, y'all. Maybe my use case really is too simplistic!

That's a very technical perspective. If you're a note taker, you ALREADY write in a format that is comfortable for you. And like the vast majority of people who enjoy putting proverbial pen to paper, you aren't thinking about bloody html tags.

The goal of generators is to reduce the friction of taking your notes/articles/etc. and wrapping them in thematically consistent HTML/CSS for your site. Once you've got it tuned/setup for your blog, they're pretty easy to use.

Obviously in your use-case where you find static site generators more complicated, then you can stick with raw html.

Writing raw HTML is just not fun for some people.

Obsidian is a nice middle ground between WYSIWYG and plain text - it doesn't send markup characters into the ether but at the same time does show you something close to the final text in real time.

Closest thing we've had to WordPerfect's Reveal Codes in decades.

When I want to write longer content, the last thing I want to think about in that process is html tags. Doesn't matter how simple - if it distracts from content, it has no place at that stage of the process. I'm also very likely to include code snippets in any post I write and I extremely don't want to write the code colouring by hand every time.
Id like to see you writing a semantically correct, accessible, responsive <figure> block containing an image of a chart displaying some data.

It takes me nine characters plus URL and alt text in markdown using Hugo. I would be surprised if you get it right on the third try without consulting MDN, spending time to research, do image conversions, and fiddle with the <picture> tag and its srcset attribute.

I thought this too, but then it hit me that it will need pagination as the number of blog posts grow. Also updating links, footers, menus, headers etc also quickly becomes a nightmare.
Changing common parts like the navigation becomes a bit of a chore without a ssg as soon as your site has more than a handful of pages.
The separation of template and content is the reason. You don't want to have to run a find and replace to add a new link to your sidebar or whatever.
Because then you have 200 blog posts and suddenly you realize "oh I wanna add an author section to all my blog posts". That is 200 files to edit. Could you write a script to do the edit? Sure, but then you pretty much build a static site generator.
And you built a static site generator.

Or at least, you will have as you realize things like you only wanted to do that on certain categories or whathaveyou.

You can in principle just write HTML with no script support, but it itself becomes an exercise in conspicuous asceticism. It is not unreasonable to want things like "the last 5 posts" on every page on a blog, or an RSS feed, or any number of other very basic, simple things that are impractical with an editor and raw HTML.

I use Jekyll actually. That's totally not the point I'm trying to argue :p
Because writing in markdown is a nicer experience. You could convert markdown to html using Pandoc, but another nice thing that these blog generators do is templating and indexing. Neither of which is necessary, but still, they're nice, especially if it happens automatically when you push to github.
For me its mainly:

  - the ability to update every page on my site at-once in a uniform fashion (want to change the page layout or add a link in the footer, either you're manually editing a hundred HTML files or a couple lines in a single template file)

  - Syntax highlighting. My blog has code blocks so I would have to manually invoke a syntax highlighter for each code block (and every time I update the code I'd have to do it again).

  - auto-invoking graphviz and gnuplot. Similar to the code blocks, I write graphviz dot and graphviz blocks as code in my blog posts and have my static site generator render them to images. If I was manually writing the HTML then I'd either end up committing the built binaries (rendered images) to git (which, of course, is bad practice but ultimately inconsequential when talking about small SVGs for the few charts/graphs on my blog) or I'd have to have a "build" step where a script invokes graphviz/gnuplot to output the images which is the first step on the road to a static site generator.

  - Avoiding name collisions with internal anchor links (the kind with the `#` symbol that scrolls the page). I use these for footnotes and code block references. I could manually assign names for these for each blog post, but when combining multiple blog posts into a single list-view for the home page, there is the risk that I might reuse the same `#fn1` anchor across multiple blog posts. Using a static site generator, I don't need to concern myself with naming them at all and I have my static site generator assign unique names so there are no conflicts.
Because I don't want to publish the millions of draft posts I'm procrastinating on right now
The input is markdown, the output is HTML. How do you bridge that gap without generating HTML?
Obsidian is honestly such a joy to write in - I use it for my blog as well:

https://ezhik.jp/

On my end I ended up building an entire custom thing that bastardizes SvelteKit to produce a static website that I then upload to GitHub Pages, but I think over-engineering a personal website is always good fun - and hey, I can tweak lots of silly aspects like how my post names get turned into /nice-and-readable-urls.

Out of curiosity, what's the advantage of using Cloudflare Pages over GitHub Pages? Both seem to require a GitHub repository.

Github Pages also works, I used Cloudflare since almost all my other projects are hosted there + I use it to manage DNS.
Understandable. I went with GH Pages for my new blog pretty much entirely because that's what my old site already used.
My blog workflow and deployment are so simple they don't even deserve a blog post;)
Great stuff, looking forward to your next blog post in 1 year: “How I rebuilt my blog on…”

A fun hobby of mine is Googling “how I built this blog with [next.js/Gatsby/etc etc]” and going to page 10 of the Google results.

It’s just hundreds of developer blogs with no blog posts other than the ones announcing how the blog was built.

Haha, been there. But this setup’s actually working really well for me. It’s not chasing the "hot new thing," it’s going back to stuff that’s proven and solid.
Is there a support group for this? I have not rebuilt my blog since Feb 21 2024 though I have been sorely tempted :P
There probably should be one, maybe taking turns with the biweekly Authors of custom static site Generators Anonymous meeting
It's our Hello World of sorts.
I remember someone presenting a development framework and saying something similar to this, "Of course, I used it to build a blogging platform..."
I’ve noticed this a lot, too, and made this drawing as a joke: https://rakhim.org/honestly-undefined/19/
I'm in the "old-ass blogger.com site" category, with posts going back to '05.
Literally just posted my newly hogoized site that dates back to 2003 THIS MORNING. :)
Oh, you put me on your graph!

"Weird Dude Who Writes Raw HTML"

My most recent example:

https://kozubik.com/items/wago_audio/

Just a small word of unasked-for-advice... consider compressing your images further! Even ignoring bandwidth concerns, a 1.3MB image takes a while to paint :)
Can I use this image on my blog?

I will off course link to you site. It’s to illustrate a point about my blogspot blog haha…

I’ve been looking to switch over to something else. But I’ve been actively blogging since 2006 and I haven’t found a good enough way and platform to switch over to.

>I’ve been looking to switch over to something else. But I’ve been actively blogging since 2006 and I haven’t found a good enough way and platform to switch over to.

Would you consider participating in a private beta of https://exotext.com/, a simple blogging platform I'm building? (example blog: https://rakhim.exotext.com/)

If so, please send me an email: hello at rakhim.org

I love that graph! So many occurrences of "that's me" or "I know somebody exactly like that".
*scnr:

ooof.. this chart is making my day, not because of it's content, but it's presentation. Apparently it only works if you have very different scales for x and y axis. As you have the same metrics on both of them (number of posts), it only worked if like x axis is from 1 to 10 while y axis is either log or from 1 to 100 or so. Or you choose a differnt metric for the x axis, like "share of posts about blog setups".

My thoughts exactly! Originally I wanted to also add a 2nd vertical axis on the right to signify "share of posts about blog setups".
This reminds me of people who will make an entire YouTube series on crafting the perfect Notion architecture. Only to not actually use it.
I am in a worse group. Changed my blogging platform, wrote the obligatory post detailing why I changed platform and couldn't even get that obligatory post out. I hang my head
Haha. I guess discovering & teaching how to do X is more rewarding than doing X. It applies to blogging, PKM and productivity too.

Is there a name for this phenomenon where this actually turns out to be true? Closest I can think of is "During a gold rush, sell shovels".

I started with and used Jekyll for almost ~10 years and ~500 posts before switching to Hugo.

I have a 7,000 word blog post on how and why I switched which I didn't publish yet because I wanted to wait 6+ months with Hugo to make sure I ironed out all of the kinks. I guess I'm the anti-case for this one! Maybe I should post this one next week. It's been quite stable.

A bit unfair to the OP, given that he actually does write posts on his blog.
Unfair in general. Building and hosting a blog is a cool learning experience and worth blogging about to remember and teach others.
I’ve been through a couple of different tools for my personal blog, and, having seen this trap, every time I did the migration I made sure to write a blog post about something completely unrelated instead. A few years ago I built my own static site generator and I vowed that I would never try to publish it for other people to use, another trap[1] that often springs on enthusiastic developer-blogger types.

[1] https://news.ycombinator.com/item?id=21616774

> max-width: 55rem;

Why???

I imagine this just mitigates the need to make the site reactive for mobile users. Everyone gets the mobile experience.

I actually prefer reading like this, even on desktop. It feels like it causes less eye strain. Though I might prefer if it was closer to 65rem.

> It feels like it causes less eye strain.

Yes that was the intention.

Local priority means that the written content can be automatically saved even when there is no network?
My own setup is similar but replace cloudflare with netlify and vscode with obsidian. However I do find writing markdown as someone with dyslexia to be a huge issue when it comes to spelling and grammer.

How is Obsidian for correcting this? Years ago I would have used something like grammarly to solve it but I'd rather something build it in if possible and make it as brainless as possible

I’m not totally sure, but Obsidian does have built-in spellcheck, and there are some community plugins like LanguageTool that might help with grammar. Haven’t used them extensively myself, but they could be worth checking out.
Strikingly similar to mine, except Jekyll instead of Hugo. I don't even build it locally these days. So, Obsidian > Github > Cloudflare.

Jekyll is slow for large content (my blog is huge), Hugo is fast. But I want to stay as mobile and lean as possible. I've tried and with a few changes in the template, I can move from Jekyll to Hugo in a weekend. I've also tried to stay as decoupled as possible from any templating engine (Jekyll), and hence rely mostly on pure HTML + CSS, while Jekyll is used more as the task runner. All the posts are separated by "YYYY" as folders and none of the posts have frontmatter.

I can also move between Github Pages, CloudFlare Pages, Netlify, or Vercel within hours if not minutes by just pointing the DNS to the ones that I want. I did this when Github Pages went down quite a few times about 3 years ago.

I almost went Markdown > Pandoc + Make but not worth it right now.

I’m tired of the git workflow. I yearn for a CMS for my Jekyll.
This is completely off topic.

What hit me ( hard ) wasn't the blogging set up, it was this:

>And if anything’s unclear, LLMs like ChatGPT or Claude are great for filling in the gaps.

For people like me who grown up before Internet was a thing. If we dont understand anything we either have to go to the library to look it up go to find someone for help. Then it was encarta. When Internet arrived I could do look up faster, or more importantly if I am stuck anywhere I could ask on IRC or forums for help.

I am sensing a large part of learning on forums and online will be gone. Read the manual becomes ask the LLMs?

And I am sensing ( no offence ) the generation growing up with LLMs may be far worst. We already have a generation of people who think Googling the answer is 99% of the work when in fact the answer is not important. It is the process of getting to that answer that is largely missing from today's education.

Sorry about the off topic message. But that sentence really hit me differently.

Processes are always changing and getting easier. The process you grew up with was far easier than what people had to do decades before you, which was easier than the process decades before that, etc.

It's easy to fret about, "How will the next generation survive in the world I grew up in, without the skills I developed?"

But the answer is, they won't. Just like you don't need the same skills a caveman had because you live in a thoroughly transformed world, the kids of today won't need the same skills you had because they'll live in a thoroughly transformed world.

Ofc some good or important things will always be lost from one generation to the next. But that's okay. Still, humanity marches onward.

I grew up the same way and it's for sure wild to think back how if we had a question about something we had to do digging at a library to find the answer hopefully. Now it's just search and done. Or read a wikipedia page about it.

I do see the "I asked chatGPT" response more and more and initially had a similar feeling but I think it's still early days for LLM's. Will they be around in 10 years and ubiquitous like search engines? Who knows. But undoubtably they will get better over time and more accurate. Just like how the early internet had a lot of bad information on it, it got better over time.

This might also be a divide between different types of people. Personally I am very curious and want to really understand how something works so I get tons of information that won't help me solve a problem, but I understand the tool or part better. I would guess you might be in the same basket. But there are also people who just want the answer to solve the problem. They don't care how it works they just want it to work. And that's fine. It takes all kinds. Not everyone needs to have a masters in CS to use a computer or program one. Best we can do is try and nurture curiosity among other people and help them figure out ways to learn more and more.

Zero cost is an antifeature.

It is just centralizing the web. You can do a lot with a $4 droplet if a single board computer isn't your cup of tea. Not "buying" into icloud/cloudfare is alone worth that cost. Also much more meaningful stack to learn.

Nothing against the post/author, I just feel the creativity to "exploit" features of the giants that is put in place just to undermine alternatives is misplaced.

Very nice post!

I do almost the same, but instead I use Astro.

I use Obsidian, with a GitHub submodule for the content, and host it all as a static page. I wrote about that here if anyone is interested: https://bryanhogan.com/blog/obsidian-astro-submodule

Same. I even built this for my GF to use. You don’t even need to download vscode as you can run it in a free dev container in browser: https://github.com/easy-astro-blog-creator/easy-astro-blog-c...

The only thing I want is to implement a gui for adding and editing posts.

What you built is actually so great! Was also thinking of building something that makes blogging for less technical people easy without the downsides of a walled system.

Haven't heard of dev containers like that before, but cool to see that they can be used like that.

Awesome! I setup something similar recently for my website and love it. I go Cursor with Hugo to GitHub to Cloudflare. I saw many Wrangler mentions so want to look at that at some point?

It’s funny because we could ostensibly switch to any git hoster but it’s really only GitHub and gitlab huh? And Cloudflare is hard to beat.

Dropbox and Google Drive work for Obsidian on the desktop version, but the iOS version does not seem to support them.