If I Can Do It, You Can, Too

So I was talking on Discord with someone and suggested they infodumped about sumo wrestling on a blog (don't ask). They said they were interested in making a Neocities, but that it was an intimidating project they were worried they couldn't do. I implore that person, and anybody who happens upon this post, that if I can do this, you can, too! I realize I'm not on the level of complete normie when it comes to tech, but I'm also definitely not a technical person. The most code I know is a small amount of HTML, a smaller amount of CSS, and a tiny, tiny amount of Javascript. Still, I could figure out Strawberry Starter, and even figure out enough raw CSS and HTML to modify a webpage generator's output to my liking.

This post will be divided into three sections: A history of how I published to the web, then a description of my current workflow, and finally, some advice for people who want to make their own site with Neocities or possibly even other web hosts.

A Brief Account of My History with Web Publishing


My first experience publishing my writing online was DeviantART. That, or it was Blogger. DeviantART was where I posted fiction, and the Blogger site was a politics blog. The DA is still up, but I don't suggest looking at it, the first thing I posted was in 2009, when I was in high school. It's all juvenile now. The Blogger site was hidden a long time ago, never to return. While I've never been an outright right winger, I know for a fact I said some really shitty things on that blog that I'm deeply ashamed of and I don't want anybody else to read. For the Blogger site, I just wrote using the site's built-in tools. As for DeviantART, I wrote my stories in WordPad and copied and pasted them over. Super simple stuff.

In 2011, I got myself a Tumblr. Again, there, I just used the site's built-in editor for posts. Initially, it was used for shitposts, but I soon deviated from that. Again, I ask, please do not go through my old Tumblr posts, or if you do, please try to understand I am a very different person now. I posted on Tumblr from 2011 to, well, I recently posted an obit for my cat, but other than that, I think I mostly stopped posting after the porn ban. A good chunk of that era, I was involved with Gamergate, something else I am deeply ashamed of. I probably said a bunch of other heinous shit there I can't even remember. Just be kind to me, please. During this time, I was still posting to DeviantART up into my university days.

In the late 2000's and early 2010's, I was super into Newgrounds. For many, many years, they said they planned to have a section of the site called NG Lit, which would've been lit if it had ever been released. As far as I could tell, there hasn't been much talk of NG Lit for a very, very long time. A shame, I would've loved to have posted my work there.

At some point in 2013, 2014, something like that, I was made aware of Twine. Twine is a tool for making hyperlink-based interactive fiction. Twine's output is an HTML file, so you can put your Twine games anywhere that allows you to host HTML. For me, that was Dropbox, which allowed hosting of HTML files as webpages. There came a time that Dropbox stopped supporting this, though I can't find when. I can't remember how I happened upon Neocities exactly, but it was most likely because I was looking for how to publish my Twines again.

In 2017, I made the first version of my Neocities, which itself used Twine. I realized pretty quickly this was a bad idea. It was a pain to update it whenever I wanted to post something. I very quickly moved the whole site to plain HTML. This second version of the site is still preserved if you follow a link labelled Old Rodania or Old Site or something like that. Eventually, editing and posting to the site by hand making every HTML page really got to me, too. So, eventually, I started dabbling in static site generators.

I first became aware of SSGs from Bryan Lunduke, who talked about Hugo. He also turned me onto WordGrinder and was one of the people who made me realize how cool Linux was, so unfortunately, I owe a lot to him. Unfortunately because he turned out to be a pretty horrible right wing nutjob. Regardless, I found out about Hugo a long time before I actually started using it, which ended up being in 2023.

If you look at the first few posts on this blog, you'll know what happened, but here's the gist. I thought I got Hugo working great, turned out I didn't actually, I tried a bunch of other SSGs but they were all too confusing to operate, and finally, I settled on Publii. Publii worked for a while, but then I came to a point where Neocities CLI, which I was using to upload to the site, stopped working for me. It was also a pain to use between multiple PCs. Eventually, after trying to get Neocities CLI to work and then looking for alternatives to Neocities CLI, Publii, and even Neocities itself, I found Strawberry Starter.

Again, full story in a previous post, so here's the CliffsNotes. Strawberry Starter is based on 11ty, another SSG, which I think I even looked at when I was looking for alternatives to Hugo. Still, the extremely well-written documentation allowed me to make something I'm quite happy with.

I didn't include social media like Twitter or Mastodon in this post, nor did I talk much about software I used for my actual writing, as I feel like those are different stories entirely. Drop me a line if you'd like to know more about that.

My Workflow Today


When I want to work on something, I start out by going to a folder called ppr (Personal Project Repository) and opening a terminal there (done by right clicking in my file manager and clicking whatever the option is listed as, something like open in terminal). I use Git to sync to a website called Codeberg and between computers, so I do a quick git pull command to make sure I'm up to date.

The next step varies. If I'm working on an actual story, I go to my writing folder. If it's a blog post, I go to my blog folder. If I'm on my Steam Deck, I have to do an extra step. Steam OS is an immutable operating system, so if a software isn't already built in or available as a Flatpak, I have to use a program called Distrobox to make a virtual environment to use it. These days, Distrobox is built into Steam OS and already integrated so that it uses the same file system as the Steam Deck, so I don't have to futz with trying to find my files after I exit. I simply run distrobox enter (name of virtual machine) and off I go. I need to do this so that I can use WordGrinder and NPM for Strawberry Starter. If you're on something not immutable, you don't have to worry about this.

I then open up WordGrinder and work on whatever project I decided to work on, and save it as a WordGrinder project (.wg) file. When I'm ready to post, I export the document as a Markdown (.md) file. If I've exported to Markdown, I move the Markdown file over to the src/posts folder in the Strawberry Starter directory. Here, I add the front matter to the top of the file, which looks like this:

    ---
    title: (title here)
    date: yyyy-mm-dd
    tags:
    - one tag
    - two tags
    ---

Once I do that, I can use Strawberry Starter to preview my changes if I really want to, which is more useful for when I'm modifying the site itself than when I'm making a blog post. To do this, I just run the command npm run dev and go to localhost:1234 in my web browser. When I'm satisfied with what I see, I kill the web server with control+c (if applicable) and run npm run upload to both build the site and upload to Neocities with one command. If you're not using Neocities or you want to upload it by hand for whatever reason, you can just use npm run build to build the site so you can upload it wherever. I personally upload into a folder on my site, which allows me to have the blog as a separate section.

After I've done all this, or even if I've just made changes, I exit the VM (if applicable) and run three more commands:

    git add .
    git commit -am "Whatever I want the commit message to say"
    git push

I run git add . to add any files I've created to the Git tracker. The period basically means add all new files, but you can also type --all. git commit commits the changes. -am has two purposes. The a is so that all changes I made to everything in the repo are commited, and the m is to make a commit message, which can be whatever I want. I'm pretty sure one of them is literally, "THIS BETTER FUCKING WORK OR I'M THROWING MY COMPUTER OUT THE WINDOW."

For other pages on my Neocities, I used a webpage generator and pretty heavily modified the output. The way the generator outputs the page, it bundles the CSS and the HTML into the same document. I have a test page on my site which is the original bundled file that I modify when I want to make changes. I put the CSS in its own file and simply copy and paste the boilerplate HTML when I want to make a new one. It's not so bad to modify the CSS, I just have to copy the changes to one file, but if I change the boilerplate HTML, I have to make sure I modify every page that uses it. I'm pretty sure I've got it how I want it now, though, and any further pages I make will be for other projects which will either have unique pages or will not be linked in the navbar, which is the biggest issue.

Some Advice and Other Info


So first things first, probably don't use Git to sync your shit. I'm sure there's a better way to do this. I'm not a programmer and this is the only thing I've ever used Git for, so setting it up and figuring out how to use it was very frustrating. Why am I using it? Well, one, sunk cost fallacy, two, I mean, it works now, I guess. Technically, I don't think you're supposed to use Codeberg for what I'm using it for, but shhh, don't tell them. Why did I start using Git? Well, it's supposed to track all your changes and I can use it from the same terminal I run Wordgrinder in. This was bullshit because I don't even know enough to look at what changes I made and being able to stay in the terminal isn't worth it. I'm just a stubborn idiot who always has to do things the hardest way possible, overthinks everything, and always gets in his own way. But hey, you're the same way, right? That's why you're trying to use Neocities for your blog and not Wordpress or something.

Anyway, as for Wordgrinder, as much as I love this software and will sing its praises to anyone who will listen and everyone who won't listen, you don't have to use it. Strawberry Starter uses Markdown for its posts, so you can use any old software that puts out a Markdown file, including a basic text editor. Markdown itself is pretty easy as far as markup languages go and I'm pretty sure a good chunk of Markdown editors are WYSIWYG anyway. Another interesting note is that HTML is okay to put into your Markdown files as well!

As I mentioned, Strawberry Starter is based on 11ty. I looked at the documentation for 11ty itself while I was learning Strawberry Starter and it seems kinda unwieldy. A lot of stuff is just not set up for you, obviously because they want to give you as much freedom to make whatever you want as possible. This is why Strawberry Starter is a good choice over 11ty. If you want a blog in the style that it's going for, you can just use it.

I didn't get into setting up Strawberry Starter because you should really just use the official documentation for that. Seriously, it's great! It explains everything better than I ever could.

In terms of looks, Strawberry Starter has nine themes out of the box, which you can modify to your heart's content, or you can create your own. I personally use the contrast theme, following that philopsphy I mentioned previously of making things readable and simple. I know the rest of the site doesn't really follow that, but for the library, I want to have a focus on the text.

If you have issues, make sure you're covering stupid mistakes, like making sure you're formatting your front matter correctly. I had this issue a few times trying to post. Just little things like getting the date format wrong or forgetting a space somewhere. If you do happen to make one of these stupid mistakes, don't worry, it happens! What matters is that you created something cool.