Why I ended up with dev.to
Tags: blog, jamstack, wordpress, ghost
Published: 2021-04-03 16:22:11

I have my "main" blog at https://janejeon.dev. It's pretty slick, and I really do enjoy Ghost's (it's the CMS running the blog) writing experience.

However, after much investigation (aka bashing my head against the wall), I've landed at dev.to as my blogging platform of choice (and naturally, I will be migrating the content I had in Ghost to here soon(TM)).

Why move when I like Ghost so much? Why not Medium/WordPress/substack/etc?

## Why I wanted to move off Ghost
I love Ghost. Its content management interface and its editor is *literally* unmatched (I'm sorry, dev.to, but it is the truth).

It is the only CMS that nailed the "block-style" editor, you can always fall back to good ol' Markdown, it is integrated with iA Writer (which is my writing app of choice), the management interface and the editor works with my iPad flawlessly (which, attached to the magic keyboard, is my "daily driver"), and in general, I really like how it looks and feels.

However, there WAS one big problem: hosting it.

Currently, my blog is hosted using Heroku (and there is a nasty, dirty hack I'm using/co-developing: https://github.com/SNathJr/ghost-on-heroku). But it was only ever a temporary stopgap, as updating and testing it is a real pain in the ass (I have to update the code, and the only way to test it is to spin it up for real, and *everyone* wants you to do tech support for them while no one wants to contribute).

Not to mention there are a whole host of Heroku-specific limitations (email that breaks all the time, no saving themes/photos locally, taking couple minutes to boot up from sleep, etc).

Then, why not just self-host it on a VPS?

I want to even *touch* hosting my stuff on a bare machine. Here's why:
1. While keeping your linux machines secure *is* possible, it is insanely time-costly and complex to do it "properly", even if you're blindly following a tutorial (which you shouldn't).
2. You need to log in once in a while and update/fix stuff to keep that machine alive, and if something breaks, *good luck* trying to fix it!

In general, it's WAY too much maintenance and security risk, not to mention a giant headache and time sink.

*But Jane, what about ghost.org?*

You're funny if you think I'm going to pay $108/yr for a simple blog that I touch maybe like once a month.

Also, a few things put me off about Ghost in general:
- no built-in search. Good luck trying to integrate search...
- no built-in comments. I am NOT resorting to disqus and selling off my readers' data
- the devs' fixation with monetization and lack of care about literally anything else (especially FEATURES). The one that REALLY ticked me off was the lack of SSO support. It's fine if it's "under development" or "oh hey we'll look into this", but they were actively going "but nobody needs it!"

As you may know, "but nobody needs it" is basically code word for "I'm pretentious and am a dictator more than a developer". I just really hate that mindset. It may seem extreme, but as an open-source developer I just got burnt way too often from developers literally power tripping over being the gatekeeper for their projects.

## WordPress
With Ghost being out of the question, the next obvious thing to consider was WordPress. WordPress.org has a solid free plan (which is awesome), it's got a *native* iOS app that actually works, and I mean let's be real: some 40% of the internet runs on WordPress, and at this point it's 1. insanely battle-tested, 2. got an **enormous** community (themes, plugins, users, etc) around it.

With all that being said, it just... wasn't a good blogging platform.

The default editor (Gutenberg) is just... horrible (after experiencing Ghost's editor, the writing experience in WordPress felt too limited AND cluttered at the same time, not to mention the UI just *looks* bad).

And while there are a billion themes out there for WordPress, almost all of them are just too bloated, cluttered, and plain ugly-looking (imo), and meant for maintaining "generic websites" rather than a blog, let alone a programming one.

Finally - and this was a HARD blocker -
```js
console.log("WordPress doesn't support code blocks!")
```

So let alone being able to adjust my code syntax highlighting with `prism.js`, I wasn't even able to *write* proper code blocks!

In general, all of these problems with WordPress can be summed up in one sentence: it's just not meant for programmers like you and I.

## Jamstack
Okay, so if self-hosting is really annoying, why not go with JAMstack (aka serverless)? Just commit to a repo and have an automatic CD pipeline (e.g. Vercel/Netlify) where it will take your content and automatically deploy it for you?

Indeed, JAMstack really IS promising. The idea that you pre-compile all your content into static files and therefore make it possible to just upload it to object storage, bypassing ALL of the pains with self-hosting and making it basically infinitely scalable, is absolutely amazing!

And with multiple static site generators, numerous community-created themes (that you can tinker with because it's just source code tracked on git), and the ability to use "traditional" CMS's (see: Ghost, WordPress) as well as "headless" CMS's (see: forestry.io, netlify-admin) to feed the content, it really is flexible and should be able to fill any need you have!

...In fact, it's *too* flexible.

With basically infinite combinations of SSGs x themes (per SSG) x CMS, the JAMstack field is *way* too spread thin for any real consolidation behind any particular combination, and that leads to basically zero support and active development for most.

And of course, with no standards to really hook any of them together, for every combination that doesn't already exist (say you like a particular "starter", but want to change the "theme", which may require you to dig down into the codebase and hack everything together because it has a different directory structure or content format), it is up to YOU bash your head against the wall for hours (if not days) trying to hook it all together, with no documentation.

It really is a shame, as I feel that compiling your blog down into static files and letting Netlify/Vercel do an excellent job of hosting it on their CDNs (for basically free) really is the most "elegant" solution, but getting to that point, especially to customize it and get it to the point where you're truly happy, really requires a lot of blood, sweat, and tears in too many cases.

## Medium
I don't think I need to go into why Medium wasn't even a choice for me. Medium is prototypical "cancer of the internet", where you give up basically *everything* for a pretty UI - control, customization, content.

And let's not even get into how infuriating the paywalls and the endless army of banners are...

Next!

## substack
I first stumbled upon substack while looking for "things like Medium but not shit", and indeed, it seemed like "Medium but not shit".

It really was a nice idea (even though the focus on payments really put me off like Ghost put me off with its v3 and v4 releases with just how basically every second of their devs' time were put into MONETIZATION MONETIZATION MONETIZATION).

It's clean, it's got a small but pretty neat community around it, but unfortunately, it was WAY too limited for me.

The UI is clunky (and honestly kinda outdated, though it was miles better than, say, WordPress), it just lacks too many features as a CMS, the writing experience is just... ehh, and there is *very* little that you can actually control about the reading experience.

When there's friction to writing, even if it's little, it WILL make you not want to write, and substack unfortunately had a bit too much friction for my liking.

## dev.to
And that leaves us with dev.to.

First, here are some things that I like about it:
- developer-focused (including a full Markdown-driven editor)
- good enough control over your content (themes, fonts, customization)
- good user experience "out of the box" - not just the editor, but also the UI of the whole website in general feel very smooth to use
- slick *and* lean reading experience

However, I would be lying if I said I didn't end up at dev.to by the process of elimination (I mean just LOOK at the stuff I've written above).

In general, I'm very wary of "platforms" where you don't actually own your content. I genuinely care a lot about content ownership and what "platforms" can do to your content.

Content is king, and autonomy is the only "real" way of maintaining ownership of your content. It's just a shame that self-hosting is not for the faint of heart.

Furthermore, both the web UI and the "native" app are utterly broken for the iOS (at the time of writing this). Now, thankfully, as this site is open source, we can just look into the source code and try to debug this, as some people are already doing: https://github.com/forem/forem/issues/13223.

Still, not a great first impression.

Also, while the editor is no-frills yet fully-featured (i.e. full Markdown, baby!), it still needs some work. It just scrolls randomly when I'm writing, the editor scrolls down way too much when I'm writing (to the point where I'm basically look at the bottom of the screen when I'm writing, ALL THE TIME), etc.

Yes, I know that if I don't like it I should make a PR. Still, very annoying to see, especially considering I landed on dev.to for some of that sweet, sweet, "no-frills no-bullshit" blogging experience.

Finally, while I do appreciate the heavy community focus of dev.to, I really am not a fan of the extent to which "the community" buries individuality.

Just like with Medium, when you publish a post, your identity that would be tied to your content if you were posting it on your own blog (with its distinct visual identity) gets lost in the sea of content. It's just another post in the endless scrolling feed of everyone else's post.

Beyond losing your individuality, not being able to really visually tie your identity to your post also has another onus: the loss of reputation.

I'm sure you saw thousands of garbage Medium posts about some bullshit "tutorial" that "covers" the most useless/basic thing and calls it a "post", or is just factually wrong, etc. In general, Medium for the most part is filled to the brim with absolutely garbage posts, which you have to sift through to find the gems.

But even if you DO post those gems, it's not a post that's on your site, visually demarcated from "the other blogs" - it's just another Medium post, hosted on Medium, linked to medium.com/blahblah/some-url.

So by the virtue of being hosted in the same site as the ocean of garbage posts and not having enough distinction from the other Medium posts, your reputation takes a hit. You're just another Medium blogger, not *you*.

## Conclusion
I miss Ghost. I really do. But as I've gotten more "boomer" (i.e. getting a real job), I've really started to fall out of love with the solutions that, while offering a great way to write and publish your content, require TLC and constant attention from you.

dev.to is "good enough". dev.to is the least evil/crappy of all the solutions I've looked at. Still, I can appreciate the creators of this platform for trying their best, and the community for fostering vibrant content and more importantly, making those PRs for the main repo (wink wink).

I hope dev.to is good enough to be my permanent "home", rather than a temporary refuge. And hello to all the dev.to readers who made it this far!