[HN Gopher] Minimum Viable Blog
___________________________________________________________________
Minimum Viable Blog
Author : jlundberg
Score : 281 points
Date : 2025-05-03 09:08 UTC (13 hours ago)
(HTM) web link (ostwilkens.se)
(TXT) w3m dump (ostwilkens.se)
| p4bl0 wrote:
| Nice, but I feel like to be qualified as a blog it needs two
| little additional things:
|
| 1- Make sure to order post by date (most recent first) and to
| display that date somewhere. The date can simply be taken from
| the post file meta data (e.g. creation time) to keep things
| minimal.
|
| 2- An RSS feed of course! It should be quite easy to generate a
| minimal one with only links and titles based on the existing
| script and a minimal RSS template.
| ostwilkens wrote:
| That's fair!
|
| 1- I'm leaning towards an automatically generated file
| containing metadata, TOML or such
|
| 2- RSS is definitely coming, but is dependent on point 1 :-)
| MarceColl wrote:
| In the spirit of being minimally viable you could just have
| that in the filename and sort it before generating.
| kryptiskt wrote:
| Since RSS is a pretty simple format, it doesn't require any
| automation, just a little copy and paste. "Handwriting your
| RSS feed"[0] makes the case for doing it that way.
|
| [0] https://everest-pipkin.com/teaching/handmadeRSS
| arccy wrote:
| while rss is nice, it really shouldn't be required to be
| considered a blog.
|
| being "followed" isn't always a good thing, it can create
| pressure to pander to your audience, the same thing that makes
| social media bad.
| susam wrote:
| > while rss is nice, it really shouldn't be required to be
| considered a blog.
|
| I agree. A blog is literally a _web log_. A chronological
| sequence of posts published on the web. RSS is certainly
| helpful for syndication and distribution but I wouldn 't
| consider it to be a defining part of what a web log is.
| prox wrote:
| Good point. My idealistic (realistic?) view of a web log is
| just a person typing out something unique that concerns
| that person and their view, life, or experiences.
|
| As soon as you start catering to and fishing for views you
| lose that angle. Not a drama, but it's already 99.5% of the
| internet.
|
| Edit : I really like Marginalia search, for prioritizing
| non commercial content.
|
| https://marginalia-search.com/
| citizenkeen wrote:
| I don't think RSS is required for soldering to be a blog, but
| I do think it's required for it to be a viable one.
| qudat wrote:
| I agree but I could also imagine a world where a minimally
| viable blog is just an RSS feed.
| politelemon wrote:
| > it can create pressure to pander to your audience
|
| RSS creates no such pressure, as you needn't be aware of
| who/what is following you. It's a convenience function simply
| for the convenience, rather than as a form and measure of
| external validation.
| arccy wrote:
| the pressure is intrinsic from the knowledge that what you
| publish will now be displayed to a bunch of people,
| unfiltered by algorithms. do you really want to put out a
| post that you yourself might find useful, but might be
| considered shallow, low effort, repetitive, non unique by
| your readers, and a waste of their time?
|
| the fact that people want to read every new thing being
| posted is external validation, rather than letting each
| piece stand alone by its merit.
| import wrote:
| RSS is very liberating. Quality of content is something
| very subjective and the audience can choose what to
| engage with. Nothing called perfect and not every post
| has to be a masterpiece.
| throwaway519 wrote:
| For a similar reason, blog posts should have no words as
| these can become SOE and the purpose of blogging become
| intrinsic SEO.
|
| Personally, I blog in my head but am concerned still it
| could lead to bias in my other activities which are
| mainly related to sitting under a tree by a lake in the
| middle of nowhere.
| egypturnash wrote:
| I've had a Wordpress blog since 2012, and many years of a
| Livejournal before that (when timeline filters were
| pretty much nonexistent) and I don't think I ever felt
| this fear. Sometimes I had art to share. Sometimes a
| serious post about something that was on my mind.
| Sometimes just the results of a "which Teenage Mutant
| Ninja Turtle are you" quiz that half my friends had
| already posted.
|
| Worrying about this "pressure" is a great way to be that
| guy with three posts about their new static site
| generator and nothing else.
| jlundberg wrote:
| Doing it easy for yourself and get quicker to the content is the
| way to go.
| concrete_head wrote:
| Thanks for sharing, I like your approach.
|
| As easy as wordpress, square space or whatever claim to be, in my
| mind this is even easier, the solution is more elegant, and you
| expose yourself to a whole lot less crap along the way.
|
| Edit: I recognise this doesn't cover hosting, domain registration
| etc.
| ostwilkens wrote:
| Thanks! Yeah, I find this a lot easier. And yes, hosting is an
| exercise left to the reader :-) I might write about my hosting
| setup in an upcoming blog post.
| balazs4 wrote:
| yes.
| dpacmittal wrote:
| Starts getting messy once you add sorting, pagination,
| categories/tags.
| ostwilkens wrote:
| True! Luckily, I don't have a need for those features :-)
| cosmicgadget wrote:
| Definitely one of those things to design with the expectation
| that it will grow.
| vemom wrote:
| I'm more of a WordPress guy. Click "install wordpress". When I
| need something I add a plugin. No code required.
| ostwilkens wrote:
| I would be genuinely interested to know how well the average
| wordpress blog handles a hug from the HN frontpage! :-)
| vemom wrote:
| There are cache plugins that effectively turn it into a
| static site. You could also run CF atop of it.
|
| WordPress is used at scale by many companies.
| paulnpace wrote:
| Cache plugins still go through the PHP interpreter. I'm
| under the impression there still isn't anything faster than
| serving HTML files.
|
| Better is use a static site plugin, then you don't have to
| bother with configuring any caching or external services.
|
| Best is also use the SQLite Database Integration plugin, so
| the server doesn't even have to run MySQL/MariaDB (other
| than initial installation), and on an otherwise light
| server, the filesystem will effectively keep the site in
| page cache while using less memory, if I understand that
| correctly.
|
| The WordPress interface can be kept behind HTTP auth or
| client cert.
| vntok wrote:
| > Cache plugins still go through the PHP interpreter. I'm
| under the impression there still isn't anything faster
| than serving HTML files.
|
| Several WordPress caching plugins, like W3TC
| (https://wordpress.org/plugins/w3-total-cache/), actually
| add rules to your Apache/Nginx server so that the cached
| HTML pages are served statically without touching PHP.
| ostwilkens wrote:
| That seems like a great stack, if you're looking for one!
| tacker2000 wrote:
| Wordpress is of course overkill for a personal blog like
| yours, but implying wordpress cant handle a HN hug is a bit
| naive.
|
| Millions of sites use WP and there are configurations to
| mitigate this. Some caching and easy server config will be
| enough to survive the "hug"
| chneu wrote:
| It's pretty easy to proxy your WordPress with cloudflare's
| cdn. Then your WordPress isn't hit very often.
|
| WordPress handles volume just fine. Nothing a HN hug would
| disrupt.
| echoangle wrote:
| > html_content = html_content.replace('Minimum viable blog',
| title)
|
| So every time your post contains the string 'Minimum viable
| blog', it will be replaced by the title of the current post?
| That's a bug, right?
| ostwilkens wrote:
| Oh yes, good catch! The code in the post is the first draft
| from O1 and this string has been replaced with {{ title }}.
| febusravenga wrote:
| So every time you post snippets how of code from your
| template/blog engine, it will be replaced by current blog
| post title? /s
| echoangle wrote:
| Kind of not /s, there's currently no way to escape the
| template tags to make them appear in the output (except
| adding invisible Unicode characters or so).
| ostwilkens wrote:
| Wow, yes.. that's actually exactly what happened here :-)
| 90s_dev wrote:
| Also you don't need to separate :root from html in your code,
| they're always the same here, so you can save a couple lines
| by joining them.
| chrismorgan wrote:
| And if talking of such optimisations--
|
| * Trailing slashes in HTML content (apart from SVG/MathML)
| are _completely useless_ , unless you're serving the
| document in XML syntax (which you can't do by accident). I
| personally think they're harmful, because they encourage an
| incorrect belief, and are seldom even applied consistently.
|
| * <html>, <head>, </head>, <body>, </body> and <html> are
| all optional. In practice, you should have an <html lang>
| attribute so that you can't omit that tag, but the others
| can normally all be omitted.
|
| * In case-insensitive things, lowercase will normally
| compress better. But Brotli messes things up because it's a
| popularity contest of the HTML that people _actually write_
| , so that <!DOCTYPE html> compresses better than <!doctype
| html>, and even <meta charset="utf-8"> compresses better
| than <meta charset=utf-8>. Anyway, <meta charset="UTF-8" />
| would be better as <meta charset="utf-8">.
|
| * In <meta name="viewport" content="width=device-width,
| initial-scale=1.0" />, the space after the comma, and the
| .0 in initial-scale, are unnecessary. (In fact, in theory
| the .0 might not even be parsed: the badly-incomplete-and-
| extremely-dodgy spec says to use strtod, which is locale-
| dependent, so a French machine _might_ parse initial-
| scale=1.5 as only one, ignoring the .5 because it's not ,5.
| In practice I'd be mildly surprised if browsers used the
| real locale-dependent strtod, though I haven't checked. If
| some spec somewhere says "assume LC_ALL=C in such cases",
| which would also largely resolve the problem, I'd like to
| know.)
|
| All up (and with title fixed to be a proper placeholder, as
| discussed): <!DOCTYPE html> <html
| lang="en"> <meta charset="utf-8"> <meta
| name="viewport" content="width=device-width,initial-
| scale=1"> <title>{{ title }}</title> <style>
| html { color-scheme: light dark;
| font-family: system-ui, sans-serif; max-
| width: 70ch; padding: 3em 1em;
| margin: auto; line-height: 1.5;
| font-size: 1.25em; } </style> <a
| href="/" id="head-link">Carl Ost Wilkens' Blog</a> {{
| content }}
| revskill wrote:
| The hardest part is the DevOps part where you need to find out
| reliable host, how to deploy, CI/CD and all the server-related
| stuff if you want maximum customization.
| agubelu wrote:
| I use a very similar approach in my own blog, because I'm tired
| of over-bloated websites that take waaaay too long to load:
| https://blog.borrego.dev
|
| Source: https://github.com/agubelu/blog
| indigodaddy wrote:
| I like this a lot and it looks great! How does it look on
| mobile?
| Retr0id wrote:
| This is basically how my blog works, except I use mistune as the
| markdown renderer, which has allowed me to extend it over time,
| including adding syntax-highlighted code blocks and latex math
| syntax: https://www.da.vidbuchanan.co.uk/blog/mathml-
| blogging.html
|
| I also generate an index page and an RSS feed.
|
| One thing that's been bugging me more recently (now that I have
| tens of articles written) is that I need to implement incremental
| rebuilds. Right now every page needs to get regenerated at once,
| which takes triple-digit-milliseconds. Unacceptable!
| john-h-k wrote:
| Thats an awesome setup and very similar to the one I have. But
| damn triple-digit-ms does actually sound shockingly slow for
| what is effectively just heavy text processing. Is there a huge
| amount of text?
| Retr0id wrote:
| One of my more dubious design decisions (7 years ago...) was
| to inline all my images as base64 (I was originally planning
| on having only simple diagrams that would compress well, but
| this is less true now). I like that every page load generates
| just a single request, and that you can ctrl+s the page
| without any breakage.
|
| I haven't profiled anything though, it could also be the
| syntax highlighting being slow (it generates quite a soup of
| HTML tags).
| 90s_dev wrote:
| A trick I used to use is to check during my custom build
| step whether the image is under 1k, and inline it if so,
| otherwise add its hash to the url and add a preload to the
| html header. I'm trying to get back to that in my latest
| custom build tool, but it's a gradual process to evolve it
| to that point properly.
| ostwilkens wrote:
| Looks nice and minimal as well. Love the look of your blog!
|
| The markdown2 package includes an option for syntax
| highlighting. You need to bring your own css though.
| yawpitch wrote:
| Dear god the bugs in that Python...
| susam wrote:
| Nice post. Thanks for sharing! I've always been fond of
| independent websites like this. My own website began in a similar
| fashion about 25 years ago - minimal, straightforward, and
| entirely built with ASP (now known as Classic ASP), simply
| because that was the only suitable technology I knew at the time.
| Of course, that's not the case anymore. These days, it runs as a
| statically generated site using Common Lisp [1], and I expect
| this to be my long-term setup.
|
| Starting with a simple collection of pages was a great way to get
| started and set up a _minimum viable website_. But as time
| passed, I found myself needing a few more features. In order of
| priority, these included:
|
| 1. RSS feeds.
|
| 2. A blog listing page with posts ordered by date.
|
| 3. The ability to tag posts by topic and generate tag-based index
| pages.
|
| 4. Support for non-blog content, like tools, games, demos, etc.
| that can also be tagged and included in the RSS feed.
|
| 5. Support for comments without relying on third-party services.
|
| With each new requirement, the source code gradually grew. What
| started as a few hundred lines has now expanded to around 1300
| lines of Common Lisp. Not too big in the grand scheme of things
| but not exactly tiny either. Still, I try to resist the
| temptation to keep adding every shiny new idea that comes to
| mind. This remains a solo passion project. I want the entire
| source code to be something I can hold in my head at once. If I
| encounter a bug, I want it to be something I can reason about and
| fix in under 10 minutes, and so far, fortunately, that has been
| the case.
|
| That said, new ideas are always tempting. Lately, I've been
| enticed by the idea of adding a blogroll that provides a list of
| posts from my favourite bloggers. This could replace my usual
| feed reader. I haven't had the time to implement it yet, but if a
| quiet weekend comes along, that might just be the next feature I
| work on. Of course, I remind myself not to let this project
| spiral out of control. I certainly don't want this to grow into
| something that can read my email.
|
| [1] https://github.com/susam/susam.net/blob/main/site.lisp
| ostwilkens wrote:
| Thank you for the kind words. RSS and dates will definitely be
| needed! I can also see myself wanting to embed shaders and web
| games in the future... hopefully without increasing the
| complexity too much. I think your blog is perfect!
| llimllib wrote:
| my path went similarly to yours, I've actually done it a couple
| of times.
|
| Here's my current iteration, a python script that does manage
| to stay under 1000 lines:
| https://github.com/llimllib/obsidian_notes/blob/c93b9b5c46fe...
| brilee wrote:
| Followed an identical path.
|
| See my source code here:
|
| https://github.com/brilee/modern-descartes-v2/blob/master/ma...
|
| Includes:
|
| 1. RSS feed
|
| 2. Blog listing pages ordered by date
|
| 3. Tagging system
|
| 4. Localhost dev server with file-watching recompilation step.
| pacifika wrote:
| I have built Lamb with a Flock feature where you syndicate
| feeds into your blog. Mainly as an alternative to multi-user.
| https://github.com/svandragt/lamb
|
| Might be useful as a high level reference
| cosmicgadget wrote:
| Exactly this. The ability to say, "I want to make this gadget"
| and then code it beats any wysiwyg.
|
| I've done derived pages like post sets, indexes, and
| slideshows. Tag flavors for people and video games. Then just
| total control over how normal widgets like thumbnail galleries
| and pull quotes look and feel.
| bambax wrote:
| I don't know if a minimum viable blog needs to pre-render html...
| For this a PHP script is lightning fast and the source markdown
| file is the only source of truth -- if you correct a typo then
| it's immediately live, no need to think about rendering.
| bob1029 wrote:
| If I was going to do a blog today, I'd dump hand written HTML
| into an S3 bucket and call it a day.
|
| The static site generators are nice, but it's really not a huge
| deal to spin up a few common css classes and maintain a little
| bit of mental discipline.
|
| I think using a blog to communicate your ideas and skills is
| great. I think making the blog tech stack itself representative
| of those things seems distracting. Not everything has to be a
| smartass ego implementation. As long as you spend 5 minutes
| testing on mobile, your audience probably won't notice a damn
| thing the next time it touches the front page of HN or wherever.
| miragecraft wrote:
| I was handwriting HTML for a while but found that I write a lot
| more with an actual CMS. At the end of the day it doesn't
| matter what your setup is as long as it helps you write as much
| as possible.
| SoftTalker wrote:
| Static HTML will also hold up a lot better if a post gets
| popular than a heavyweight dynamic site framework will.
| FlyingSnake wrote:
| It is easy using standard static blogging framework like
| Hugo/Zola + Cloudflare Pages. I have a minimal blog (<100kb) and
| it meets all the criteria that OP has listed.
|
| This is what I did:
|
| - Use Hugo Blog Awesome theme
|
| - Followed the 512kb guidelines and verified the page size.
|
| - Stripped down any images and unwanted JS, but there weren't
| many.
|
| 1: https://512kb.club
|
| 2. https://radar.cloudflare.com/scan
| theletterf wrote:
| The post is skipping the hosting side. Guess it doesn't matter
| too much these days? What's the best besides Netlify's or
| Cloudflare's free tiers?
| zooi wrote:
| Three lines in a Caddyfile would be sufficient
| sureglymop wrote:
| Imo oracle cloud free tier vm with a simple caddy or traefik
| setup.
| owzkshfjsekui wrote:
| good idea .... for ipfs
| GaggiX wrote:
| I was thinking, another thing you could probably easily add is
| optimizing the images for web delivery, in your first article
| there are quite large jpgs.
| 90s_dev wrote:
| I've been experimenting with minimal blogs for about 15 years.
| Some tricks I learned:
|
| * You can get away with const title = lines.match(/# (.+)/)[1]
| and avoid frontmatter.
|
| * My blogs never have so many posts they need pagination or tags,
| or categories, or sorting.
|
| * JSX turns out to be a great vanilla server side string builder
| if you use a questionable hack like
| https://immaculata.dev/guides/enabling-jsx.html
|
| * GH Pages with arbitrary build steps instead of (sigh) Jekyll is
| really easy now with things like
| https://immaculata.dev/guides/using-gh-pages.html
|
| * highlight.js is still basically the king of super easy code
| syntax highlight by adding literally three lines to your HTML
| (shiki is cool but _slooooow_ )
| tomalaci wrote:
| I've been wondering what is the benefit of putting up your own
| web server or scripts to serve your static content when you could
| put it in a Github repo or serve from something like S3?
|
| The nice thing about latter is that the bandwidth, DDoS or other
| load-related issues aren't that much of a problem. Server
| maintenance also isn't a problem as you don't have any.
| chneu wrote:
| Usually a web server is a real simple add-on to an already
| established home network/lab.
|
| It's not necessary. Just a fun thing to do.
| motorest wrote:
| > I've been wondering what is the benefit of putting up your
| own web server or scripts to serve your static content when you
| could put it in a Github repo or serve from something like S3?
|
| I think you're overestimating the work required to put together
| a web server. For example, you mention dumping files in a S3
| bucket, but that doesn't require much more work than whipping
| out a nginx instance and dropping said files in a folder.
|
| Also, some people already run their own servers or deploy their
| services in some cloud procider. The work required to put
| together a blog is minimal.
| Linux-Fan wrote:
| One key benefit of putting up an own server is that there are
| no limitations on file types and much fewer restrictions on
| what kind of content you can create.
|
| For serving static files, I can (and have) lived a long time
| with one of the "free hoster" sites -- from times before Github
| Pages or S3 were a thing I guess, today I'd go for Github
| Pages.
|
| A key advantage of moving to an own server was that I can
| enable the odd feature or technology any time. E.g. most
| recently I wanted to have some "private" subspace with fancy
| authentication and it was easy to add with proper access to the
| server config.
| mrroryflint wrote:
| I have a very simple setup using 11ty (https://rory.codes) - but
| nowhere near as simple as this. Very impressive!
| ds-rants wrote:
| I personally use a combination of quarto to statically render
| markdown files and hosting on GitHub pages because I don't want
| to bother with the self hosting for now. In the past I used a
| combination of R-markdown with a nginx server but decided to move
| to a simpler solution
| thenthenthen wrote:
| Auto-index with header.html and some js for me
| sandebert wrote:
| Nice solution, and congrats on winning HN for the moment. And
| thanks for 46elks. (Happy customer here.)
| jlundberg wrote:
| That was unexpected! My friend Calle wrote this article and he
| has made some really cool projects with 46elks (and demos with
| voice recognition).
|
| Ping me on my work email and I'll send you some fun links! :)
| Igor_Wiwi wrote:
| your blog has 1 big problem - no SEO optimization, meaning that
| after spike of visitors from HN today, it will disappear in
| Google void after couple of days, meaning no visitors in the
| future, no mentions from ChatGPT, etc. It's most common problem
| for all self-hosted blog engines, though idea I like that main
| idea of minimalist blogs (I am using Bear blog by myself).
| cenamus wrote:
| How much does that actually matter? Most blogs I read I found
| via HN or through other blogs, I'd seldomly go googling for
| one, except when maybe lost the link, etc.
| Igor_Wiwi wrote:
| If you don't want others to discover it later, then it
| doesn't matter
| cosmicgadget wrote:
| This is tongue in cheek yes? I thought you were actually
| advocating for SEOization until the GPT mention.
|
| I think even SEO is on the outs in favor of established domain
| authority, so the best tactic is to blog expecting obscurity.
| wood_spirit wrote:
| I currently have a very similar setup. And tbh I'm keen to move
| to a less involved solution...
|
| Are there anything like ghpages with a built in wysiwyg editor?
| prmoustache wrote:
| There are still some wysiwyg html editors available. On the top
| of my head I can think of the editor included in the Seamonkey
| suite.
|
| Also, etherpad can export to html.
| strzibny wrote:
| Very nice and minimal. I am going the opposite direction. I am
| cancelling my static generated blogs and moving everything to
| LakyAI which will help me to manage everything from a single
| place. Not quite ready for prime time tho.
| AndrewStephens wrote:
| I restarted my own blog in exactly the same way after getting
| frustrated with WordPress. The most important thing in blogging
| is to get something simple that will not get the way of you
| actually writing.
|
| Over the years I have added to my solution with custom markdown,
| tagging, rss, and most lately exif-stripping. Technically the
| source is available [0] but I can't see anyone else using it.
|
| [0] https://github.com/andrewstephens75/gensite
| ostwilkens wrote:
| >The most important thing in blogging is to get something
| simple that will not get the way of you actually writing.
|
| Yes! I find the easiest way for me is to just open a new tab in
| my code editor and typing.
|
| Exif is a real gotcha. I'm planning to compress images anyway,
| so this could be done in the same step.
| AndrewStephens wrote:
| > Exif
|
| Yeah, I thought I was being careful and manually stripping it
| from photos until a nice reader emailed me to gently let me
| know i had missed a few.
| abhisek wrote:
| I would really think it depends on use-case. If you are tired of
| Wordpress bloat and want something simpler you can probably build
| a markdown server over a directory with a very very minimal
| template. I remember Renato used to do that for docs, just serve
| a website on top of a dir containing markdown files.
|
| But as you invest time and effort, get more readers and asks from
| your readers, your need for features even for a simple blog will
| increase. At least basic conversation around content. You will
| probably end up using Discuss or decide to make your simple blog
| much more complex by introducing a database (or may even be just
| flat files on S3).
|
| At some point you will either focus on only "writing" and sharing
| ideas in which case a simple publishing infra is good. If you
| want more, you will probably end up building a Jekyll, Hugo etc.
| from scratch or better adopt and contribute to one of these :)
| sirodoht wrote:
| Inspiring.
|
| I've built a blogging platform with similar vision which I could
| call "Minimum Viable Blogging Platform"
|
| https://mataroa.blog/
| qudat wrote:
| I love matoaroa.blog!
|
| When I was experimenting with SSH apps I decided to create a
| blog platform inspired by it: https://prose.sh
|
| Thanks for the inspiration!
| ksec wrote:
| I remember I read it on HN a few years ago and then I
| completely forgotten about it.
|
| I am moving (some of) my blog over now.
| yaKashif wrote:
| Yeah but too technical for 99% of the humanity.
|
| For all of them I built Lykhari.com
| captn3m0 wrote:
| Something I'd like to see in browsers is native support for
| text/markdown and text/gemini.
|
| If browsers can decide to render PDFs, surely a simple formatter
| and user-decidable stylesheets for markdown/gemini content can't
| be that hard to ship.
|
| As it stands you can write a text/plain blog but you will be hurt
| with SEO concerns since it isn't really hypertext (maybe you
| could do some magic with link headers). Supporting other formats
| lowers the barrier to publishing in a neat manner and gives
| control back to users.
| Lord_Zero wrote:
| Gemini has its own format?
| tweetle_beetle wrote:
| > It has some superficial resemblances to Markdown, which
| will make it easy to learn if you know MD, but it's quite
| different in other ways.
|
| https://geminiprotocol.net/docs/gemtext.gmi
| quectophoton wrote:
| > Something I'd like to see in browsers is native support for
| text/markdown [...]
|
| Sadly, I can see why it's unlikely that we'd get this.
|
| First, browsers would need to agree on which flavor of
| Markdown, what extensions, and so on. After all, Markdown is
| _almost_ like the CSV of text formats, with everyone doing
| their own thing ( "almost" because you can still assume that
| some basic things work as you'd expect).
|
| Only with that, I can already see the backlash no matter what
| they choose to do here. Too minimal, and get complains about
| not being too useful. Choose some extensions, get complains
| about being bloated. Make any attempt to have a thoughtful
| discussion about pros and cons (short and long term), get shut
| down with "don't let perfect be the enemy of good".
|
| If we can get past that and finally agree on one specific set
| of features, there's still the question of whether it's
| actually worth it or not. The difference between Markdown and
| PDF is that reading PDFs directly in the browser is a common
| enough activity, but reading Markdown directly is only going to
| benefit the tiny audience of the small percentage of software
| devs that exist in the world, and maybe 5 weird people.
| Everyone else with a blog would just use the WYSIWYG from their
| CMS.
|
| That's why I wouldn't be surprised if I don't see native
| Markdown rendering during my lifetime.
| floathub wrote:
| If you're already using Emacs and/or org mode, then this is a
| useful guide to setting up a blog/site that is super easy to
| maintain/push/etc, including free hosting at github with a custom
| domain name:
|
| https://stuff.sigvaldason.com/how.html
| rambambram wrote:
| It's 2025, the web has come full circle again, so where's the RSS
| feed?
| 38 wrote:
| > Tired, so ask O1 for a render.py script
|
| Groan
| emadda wrote:
| Something I have experimented with for a few sites is using Bun
| JS with HTML in JS strings.
|
| Bun has a --hot flag that regenerates static html on change.
|
| IntelliJ IDE can detect a // language=html comment above strings
| which formats the html inside and does highlighting etc.
|
| Just using vanilla JS functions instead of a template language
| lets you write any logic yourself instead of looking up the
| template languages way of doing it.
| keepamovin wrote:
| I just made this thing[0] last few days, and it's sooo much, and
| you showed me simple. So here's my simple:
| https://o0101.github.io/mvb/
|
| I think I like simple.
|
| [0]: https://studio.dosaygo.com
| hxii wrote:
| I tried to follow the same reasoning and made my own SSG for this
| purpose - Hajime.
|
| It really does help when you don't even have the potential option
| to distract yourself with bells and whistles.
|
| Write some markdown, run a command and your blog updates.
| indigodaddy wrote:
| Hi sounds interesting, do you have this tool online anywhere?
| _fat_santa wrote:
| I ran an "MVB" for a while but mine was even more simplistic.
| Just a straight HTML page and for posts I would write them as
| .txt files and manually update the homepage. While it was quite
| "verbose", I would still say it was easier than having to deal
| with the "modern web".
|
| Since that time I have moved to something more sophisticated and
| now run Astro for my personal site and blog and honestly it's
| freaking awesome. On their landing page they claim it's the best
| platform for "content driven sites" and after using it for 6
| months I have to say I agree, they take all the BS out of
| building a blog and just give you clear and easy to follow
| conventions for just about everything you'd want for a blog.
| achierius wrote:
| Do you use someone else's theme or did you write your own?
| shepherdjerred wrote:
| Astro is absolutely amazing. I don't know how it's more
| popular.
| hcarvalhoalves wrote:
| Here's one using Emacs' Org mode built-in HTML publishing
| capabilities:
|
| https://github.com/hcarvalhoalves/org-mode-site-template
| froggertoaster wrote:
| I feel like the first MVB was Maddox - too bad he fell way off.
| jprokay13 wrote:
| I went all in on using Caddy for rendering my website and blog,
| but I'm encountering a frustrating issue that I'm not sure how to
| solve. The feed on my site uses the listFiles feature to populate
| from a directory. I take care to name things so ordering is
| preserved. No problems on my machine getting the feed ordered
| correctly. However, when deployed to Railway via a container, the
| ordering is all wrong. Any thoughts on how to debug?
| shakna wrote:
| listFiles is not sorted. It provides the files in the order
| that the OS provides them. That it's ordered on your machine,
| probably has to do with when the underlying nodes were created.
| But that's not going to much work in production.
| dirInfo, err := dir.Readdir(0) if err != nil {
| return nil, err } names := make([]string,
| len(dirInfo)) for i, fileInfo := range dirInfo {
| names[i] = fileInfo.Name() }
| jprokay13 wrote:
| Yeah that was what I was afraid of. I thought I saw in the
| caddy code that they did a sort on file name, but I must have
| misread it. Thanks for responding!
|
| Edit: after looking more closely at sprig, the solve was
| sortAlpha
| indigodaddy wrote:
| I'd love more info about your process!
| Tallain wrote:
| I'm reminded of the chart from this blog post:
| https://molodtsov.me/2023/02/how-to-start-your-blog-in-2023/
|
| As I fell into the SSG pit I found I mostly wrote about and
| fooled around with the SSG itself, instead of all the things I
| originally planned on writing about and doing. So I threw away
| the SSG and installed Wordpress and stopped caring. It's been
| liberating.
|
| If the goal is to tinker and write about the tinkering, that is
| fine. If you're not like me and the tinkering never gets in the
| way of the writing, that's also fine. But that wasn't me. I had
| to learn yet again that the best tool was the one that got out of
| my way and let me do what I came to do.
|
| The last thing I need when I'm aiming to write is a chance to
| procrastinate.
| atoav wrote:
| I agree, but I think wordpress is overkill in 95% of cases.
|
| Why? Because it takes too much maintenance (keep it up to date
| ornbecome part of a botnet) for features you probably don't
| need. A static site generator is totally fine for most blogs
| and if it needs maintenance it is at a time of your own choice.
| pclmulqdq wrote:
| I ran into the maintenance load of an SSG for my blog, and
| only just now switched themes over this rather than fixing
| the old theme (which had several customizations). In that
| theme swap, I think I lost all the productivity I gained from
| using the SSG over raw HTML.
| Tallain wrote:
| I disagree, it's not overkill unless you make it overkill.
|
| My update process is:
|
| - Click a button to back up
|
| - Click a button to update everything
|
| - Open my blog to make sure it still looks normal
|
| Definitely not onerous. To be fair I don't use many plugins,
| and my theme is very simple. I don't think a plain old blog
| doesn't need many plugins.
|
| Sometimes I take a break from blogging. I don't want to have
| to read documentation on how my SSG works (either my own docs
| or docs on some website) to remember the script to generate
| the updates, or worry about deploying changes, or fiddling
| with updates that break my scripts, or anything like that. I
| do stuff like this for my day job.
|
| I like my blogging experience to be focused on a single
| thing: writing.
| Spunkie wrote:
| I don't think I could ever go back to SSR like WordPress. My
| only real concern with SSG is if the build will work, and even
| when it doesn't it's never an emergency.
|
| Whereas the concerns for something like WordPress is
|
| 1. Has our website been hacked and publicly defaced?
|
| 2. Has our website been silently hacked and is being used to
| secretly distributing malware or worse, aka the FBI randomly
| shows up at your business.
|
| 3. Will updating one random plugin nuke your entire live site,
| resulting in multiple sleepless nights? Will not updating it
| cause your site to get hacked also resulting in sleepless
| nights?
|
| 4. Or better yet something in your underlying environment
| changes and nukes your site, usually in the middle of a weekend
| out with your family, and your hosting provider pinky swears
| they didn't change anything. So you spend your whole weekend
| investigating just to find out your provider did change
| something, usually something stupid too.
|
| 5. Considering all the above your off-site backup solution is
| vital so better keep that maintained and thoroughly tested as
| well.
|
| 6. Plus a thousand other reasons to waste time, worry, and lose
| sleep.
| Tallain wrote:
| We're talking about blogging here, not business-critical
| website infrastructure. If my blog went down I wouldn't lose
| a sleepless night over it. I'd figure it out later.
|
| If I were choosing a CMS or tech stack for a critical piece
| of infrastructure my requirements would be different and I
| might find some other tool.
|
| Also, if all these were so much concern, I doubt so much of
| the web would run on Wordpress. Yes, you need to keep your
| install and plugins up to date. But you need to keep your
| toolchain up to date no matter what you use. Risk of breakage
| on update is a thing everywhere, not just Wordpress. I'm by
| no means a Wordpress fan, but it really is not as bad as it's
| painted.
| Spunkie wrote:
| > Also, if all these were so much concern, I doubt so much
| of the web would run on Wordpress.
|
| I used to run a company that all we did was wordpress,
| joomla, and drupal maintenance, performance optimization,
| and hack recovery. It very much was and mostly continues to
| be that bad.
|
| > Risk of breakage on update is a thing everywhere, not
| just Wordpress.
|
| Ya the issue with server side rendering is that your live
| environment is made of up dozens to hundreds of difference
| software stacked on top of each other and they all pretty
| much need to work perfectly to actually work and or not be
| vulnerable. And if you use something standard like cpanel
| to manage your environment, add another 1000 layers of
| complexity to the stack.
|
| And lets not even go into all the work it takes to have
| that environment have decent performance and run on
| reasonably priced hardware.
|
| Where as my concerns for my SSG live environments basically
| amounts to, is the host publicly accessible? To be
| vulnerable you would need to do something very stupid like
| set file permissions to 777 or something.
| Tallain wrote:
| Again, we're talking about blogging, not business sites
| or SSR or CMS tooling. Very different needs with very
| different solutions.
|
| I personally don't think it's that much work, and
| definitely not complicated, to keep my software up to
| date. And as a blog all I need to do is cache / throw
| behind a CDN and I'm golden. Nothing complex going on
| here. No headaches, no late nights, not even a wink of
| worry.
| lolinder wrote:
| Wordpress in 2025 has a very dangerous pair of traits:
|
| * It and all its plugins must be kept up to date or else you
| will be compromised.
|
| * The BDFL is a maniac who is happy to block access to deliver
| or receive security updates for petty personal reasons.
|
| With a static site there are no security vulnerabilities to
| patch, so it doesn't matter if the SSG project totally implodes
| because the maintainer goes crazy. With WordPress it matters a
| lot.
| Tallain wrote:
| Had to look up what "BDFL" meant.
|
| Even if the dude tries to paint the internet with Wordpress's
| brains, I'm confident I will have time (and the impetus,
| finally) to find an acceptable alternative for my workflow.
| I'm open to suggestions.
|
| Also, as I mentioned to a sibling response, the upkeep really
| is not that much work. It's a personal blog and takes a grand
| total of three (maybe four) clicks to update every once in a
| while.
| egypturnash wrote:
| It keeps itself up to date.
| lolinder wrote:
| Only as long as Matt deigns to allow your server to access
| his servers and deigns to allow the plugin authors who you
| depend on to log in to his servers.
|
| WordPress has no governance, it just has Matt, and wo
| betide anyone who ticks him off (or who relies on any
| developers who tick him off).
| sroussey wrote:
| Wordpress.com works fine for ordinary people. No updates
| to worry about. Not my cup of tea, but dead simple.
| nedt wrote:
| Use wordpress headless and protected the backend so it can't
| be accessed publicly. Then you don't have to care so much
| about keeping it up to date.
| RainyDayTmrw wrote:
| Maybe not so benevolent after all.
| blogloglog wrote:
| I think you're right. I stuck with manually writing raw HTML
| and it's fine, good even. I do have a python script that makes
| an RSS feed though, which was one more script than I wanted to
| write. WordPress would've saved me; unfortunately I already had
| a website so it was easier to add a blog there.
| Tallain wrote:
| For the rest of my website I also just write raw HTML / CSS,
| and JS when needed. It's all static content and little toys,
| so no RSS need. It's nice to keep things simple when you can.
| mikae1 wrote:
| Blog spam? :) The URL is https://rakhim.org/honestly-
| undefined/19/
| Tallain wrote:
| Thanks for the link :) I do think the blog I linked makes
| many of the same points I tried to make, so not really spam
| as it has actual content.
| Keyb0ardWarri0r wrote:
| Take a look at https://markdown.ninja
|
| It lets you create a blog and a newsletter with Markdown and
| publish directly from the command line (or the web editor). You
| get the offline-first workflow of Markdown, but with beautiful
| themes like substack.
|
| It's like a mix between Wordpress, netlify and substack.
| capitanazo77 wrote:
| The perfect minimal web is Astro Js and that's because of images.
|
| Mobile screens and desktop are fundamentally different. You can't
| have small and big at the same time.
|
| That is solved via the standard html img srcset
|
| Astro solves that easily.
|
| And Wordpress of course.
| accrual wrote:
| Enjoyable to see another minimal static blog and the discussion
| around it.
|
| Since we're chatting about our static site generators - I've been
| working on mine for a few months and naturally spend way more
| time on the generator than the content. ;) Mine is written in
| TypeScript and I'm targeting HTML 4.01 Strict for compat with old
| browsers.
|
| It started pretty simple, just walk a directory of .md files and
| output .html, but it now has RSS, Atom, tags, a "latest" page,
| sitemap, stats, table of contents, SEO features, etc.
|
| It's been fun - a nice "easy" project to slowly polish over time
| and to gradually grow my TS skills.
| lelanthran wrote:
| Am I the only one who uses bash and pandoc? I really should
| switch to a "real" language for SSG
| to-too-two wrote:
| Makes me think of https://bearblog.dev/.
|
| I've been thinking about using Obsidian as a static site
| generator.
| sareiodata wrote:
| Made this silly thing to have a site with just html and have a
| way to have templates & header includes, while still having the
| site accesible without JS if needed
|
| https://github.com/sareiodata/hx-weaver
|
| That being said, I don't find myself actually writing a blog :)
| wvh wrote:
| This reminds me of my own website using Apache's server side
| includes in the late nineties. No Markdown though, but otherwise
| not substantially different. Simplicity tends to work best (most
| reliable, least resources) for text content.
| _dain_ wrote:
| html_content = html_content.replace('Minimum viable blog', title)
|
| Did this originally say html_content =
| html_content.replace('{{ title }}', title)
|
| And then you ran it?
|
| Sanitize your strings!
| Xeoncross wrote:
| This is why I created https://github.com/xeoncross/jr all those
| years ago
|
| You don't need a backend.
| geor9e wrote:
| I did the same. Sync'd my Obsidian .md vault between my macbook
| and my server. Asked AI for an index.php that would render a nice
| html/css webpage at domain.com/whatever for every whatever.md on
| the fly. Works fantastic. Supports everything Obsidian markdown
| does - pics, videos, resizing via drag, wikilinking, codeblocks,
| etc... No publish step - from my site you can literally see me
| typing live in Obsidian. No more friction to share things.
| hackerbeat wrote:
| Love this, and how more and more folks are going minimal, like
| https://wordgag.com/.
| bartread wrote:
| I'm in the process of resurrecting an old blog of mine, which had
| used hexo back in the day with all the raw posts being markdown
| files that are statically rendered to HTML... and to be honest
| I'm pretty tempted by this very simple approach because hexo is,
| honestly, annoying me.
|
| For whatever reason it's just not picking up themes even though
| I'm now using the most up to date everything. And actually I've
| realised I don't even like the vast majority of the themes
| anyway, including the one I used previously. And since developing
| my own hexo theme seems like kind of a faff, I'm pretty tempted
| to just throw together a Sass sheet, compile it to CSS, and use
| that as my theme.
|
| I guess if I got into the detail of it - comments, archive pages,
| etc. - the complexity would start to creep in and I'd find that
| what I was doing was building my own home-rolled hexo-alike... so
| maybe I should persist with figuring out why themes aren't
| working for a bit longer.
___________________________________________________________________
(page generated 2025-05-03 23:00 UTC)