monkinetic the blog

Posts tagged with 'blogging' (33 posts)

A Bit Of Blog Complaining

Guess it’s time to revisit the blog engine here. I wrote Goldfrog a few years ago and it’s been chugging along on this Digital Ocean instance fairly well, but at the time I had in mind a two-way sync between gitlab, where I maintain a separate repository of my archived content, and the filesystem/db in Goldfrog.

It worked, sort of, for a while, but the deployment on DO is NOT simple to remember, uses Ansible and code from 2 different git repos to set up or update the server, and was just 3 times more clever than it should have been.

I also implemented a flexible/configurable POSSE feature that is supposed to send updates to my mastodon account but … isn’t right now? And the logging setup on the site is abysmal.

I still like parts of my system. If I did it again, I’d still want:

  • My custom posting UI that works like the ancient Radio Userland sites did: post form at the top of the home page list of posts:

And my version in Goldfrog: 2024-04-11 at 11.39.49 AM.png

  • A small web app - not a static site generator
  • Content stored ultimately as markdown files so they can be stored in git or similar
  • Content indexed in sqlite for searching. serving various archive pages (tags, etc)

UPDATE: As long as I’m dreaming, I wish it was easier to run a small web app like this off a container. I probably could with Digital Ocean’s app platform, I haven’t looked into it lately, and I’d still have to solve the “index in a sqlite db file” problem.

#blogging #goldfrog #userlandfrontier

Replying to a Mastodon post from the blog

Fedi/Mastodon programmers… with the #MastodonAPI, and given a url to a post on any instance (assuming I have access to the toot from my account), how might I get my instance to fetch it and give me a “local” ID that is suitable for passing as the “inReplyToID” in a toot payload?

Wondering if I need to:

Would that be the “local” ID?

#MastodonAPI #fediverse #programming #blogging #indieweb

#programming #blogging #indieweb #mastodonapi #fediverse

Steve Ivy

Dammit I started a branch on Goldfrog to play with the #micropub api, and now that it’s in pieces on the editor floor, I have 3 more features I want to add. #indieweb #blogging

(One is adding the ability for a note or post here to be a reply to another post on Mastodon.)

~ # 17:53 ~

Steve Ivy

Been wanting to re-focus on the ol’ blog here, and a friend told me about – there’s a local event tomorrow night so going to go hang out and work on some longer posts with a bunch of other writers :) #writing #blogging #community

~ # 14:23 ~

Update on Goldfrog

Over on Mastodon, @[email protected] said:

I’ll be excited to beta test another blogging platform. (Still a Tumblr nerd at heart.)

Unfortunately I’m not sure I’d inflict Goldfrog on anyone at this point. 🤣 However, it’s still fun to hack on, so here are some salient points:

My favorite features:

  • A Twitter-sized posting form right at the top of the home page for posting short notes, supports Markdown, has a character counter for fun
  • Posts support tags, and #hashtags in posts are auto-linked for searching by tag on the site
  • I have a separate posting form I can use for longer posts
  • Posts can be syndicated to Mastodon, POSSE-style

As for running Goldfrog, it’s just a Go binary running off a config file, a theme directory, and a directory of content. There’s a separate tool for indexing posts from the filesystem into sqlite (usually only done when installing or updating from git).

  • Runs on a DO droplet, currently deployed with ansible
  • The only “admin” functionality is posting and editing posts, everything else is editing a config in git. “Admin” is based on a security-through-obscurity login url and a hardcoded user and password in the configs. This is dumb ;) and I’m experimenting with supporting Gitlab OAUth for login.
  • Posts are stored in git as Markdown files with yaml headers
  • posts are read into a SQLite db for serving and searching

I enjoy hacking on Goldfrog, and sure I’d like it if someone had a barebones product like it, but I have no interest in supporting either an actual open-source product, or running an entire damn “platform”. 💜

#goldfrog #blogging #mastodon #indieweb #hashtags

Steve Ivy

Posting to via Drafts (I want to support something like this in the next version of my own blog software, via some kind of API)

~ # 12:44 ~

Time for bi-yearly web presence maintenance

What with Twitter (aka birdsite, hellsite, muskosite) flailing in the clammy hands of Dr. No, and interest in the federated web re-emerging, I figured it was time to review my own web presence and see what was the situation.

Dear reader, it was Not Good.

Warning one was hitting this site from my work network and getting a BitDefender screen of doom saying the site was serving a keylogger. NOT GOOD.

Then the site - which was hosted on Linode and runs my own homegrown blog software, Goldfrog - went completely down. After some “where did those ssh keys get to, where is this thing anyway” I got logged in and figured out that my server had been hacked in some way, TLS and letsencrypt removed. I haven’t had time to troll the logs for evidence as to how the server was accessed, but I downloaded them and have them set aside to look later.

We Can Rebuild It

Thus entered a week of figuring out once again how the heck Monkinetic is built and deployed, migrating the code from Github to Gitlab (which I’m more familiar with due to $dayjob), and refactoring the Ansible code that builds the server and deploys the blog/content.

Finally today I got it 85% done, which is pretty good for a full migration between hosting providers (I also moved from Linode to Digital Ocean where I already have some other services).


With the insanity on Twitter, I logged back into my Mastodon account on and enjoyed the huge stream of new folks migrating from Twitter to federated platforms (mostly to since that’s the first/largest instance, but folks are making their way from there to smaller instances as they get more comfortable).

Apparently Mastodon 4.0 is out (release candidate) and they’ve changed the annoying-until-it-was-gone “Toot” to “Publish”. I’d have preferred “Post” myself, but 🤷‍♀️.

Maybe servers should just change it to suit their audience?

#devops #blogging #socialmedia #federation #mastodon #goldfrog

Steve Ivy

In order to fix my archives and daily digests, I might have to address timezone handling on my blog. Or I might just stop blogging #timezonehell #blogging #programming

~ # 20:54 ~

Steve Ivy

Daily Digest subscribers: posts should now appear in the email in the order they were written – more narrative style – not in reverse-chronological “blog order” #blogging 💌 😁

~ # 19:30 ~

Steve Ivy

@soapdog @[email protected] yeah the about page is broken because I haven’t written it yet ;P want to write a markdown-to-page handler for the site #blogging #diy

~ # 22:48 ~

Steve Ivy
Steve Ivy


Now that I’m blogging more often, I often find myself uploading screenshots. MacOS’ capabilities are fine, except that I don’t really like uploading files with names like “Screen Shot 2020-02-10 at 10.38.34 PM”.

Yesterday I asked:

Are there any #macos screenshot utilities that will simply let me name the file before saving it? (My needs are simple, the OS’ own utility is quite sufficient except for the name thing)

My old Six Apart mate Simon Wistow mentioned Monosnap a free utility that does exactly that - lets me name the file before saving it.

(Conveniently, it also make recording gif screen captures stupid easy)

#screenshots #blogging #macos

Steve Ivy

Yesterday I imported 7800+ tweets into Goldfrog, my blog/cms, as part of owning my own content. Tweets (or Notes) will be published on and be syndicated to Twitter. See my archive page (20 years worth), blue are posts and pink are notes

~ # 23:31 ~

Goldfrog updates: syndication

If you follow me on social media - Twitter or Mastodon - you may have seen lots of nonsense posts go by recently… Shot 2020-02-06 at 8.19.51 PM.png

I’ve been working on improving my POSSE features here, which meant not only composing my posts and notes locally, and then publishing them to Twitter et al, but also being able to track where they “landed” (ids and links) and make it easy for users to find my content on the syndicated site.

So I dug back into my syndication code, rewrote it several times, learned some things about goroutines, learned how not to do some things with goroutines, and settled on a way that worked. With luck, this post and any other that is also published on Twitter or Mastodon will have links to those sites along with the post, and (at least for Twitter right now) have links to reply, favorite, or retweet the post.

As Dave used to be fond of saying:

Still digging!

#blogging #goldfrog #indieweb

Steve Ivy

Towards IndieWeb: POSSE and Notes

#posse #blogging #webmention #indieweb

~ # 16:22 ~

Steve Ivy

@evanpro I can’t stop thinking about this. Any prior art I should look at? #blogging #nerd

~ # 23:12 ~

Steve Ivy

I have blog archives back to May 2000, and made an new archive page that also shows a bar chart of monthly post activity over those 20 years. #blogging

~ # 20:45 ~

Write The Web, 2020

For 2020, I’m writing a new blog app. It’s just for myself, a toy to remind me why I love the web. It’s called Goldfrog, and it sounds a bit like “Go, blog!”

Why in the hack, in this day and age, would I spend time writing my own #blogging software, when you can’t sign up for a VPS anywhere without tripping over offers to help you set up Wordpress, or Ghost, or what have you?

A few reasons.

New Year, New You

2019 was shite-filled, and due to politics, the tech trashfire, and the friction of blogging through several variations of static, git-powered versions of this site, I simply stopped blogging. I’ve wanted to, but the effort killed the motivation before I could get some words out.

So I finally decided to write something myself, that did just the things I wanted. #goldfrog is written in Go, because while I will love Python to my dying day, my brain needed a kick in the pants this year, which relates to my next point.

The Builder’s High

Rands writes eloquently on the builder’s high. With family engagements and work over the last few years my hobby coding has dropped to almost nil (None if I were writing Python).

I needed something to reboot my creative juices, and trying to write something I really wanted, that thought would be quick, in a new language, seemed like a good way to go (I did want it, it wasn’t easy, and Go hates me. But I’m learning and that feels great!)


/static/images/Screen Shot 2020-01-07 at 4.51.44 PM.png

A bit more about Goldfrog: the single feature I wanted was a posting form on the home page, right up front. Various Userland products had had this, and it always felt right.

Second to this was an “Edit” link next to every post, wherever it was found on the site.

Finally, my main technical “innovation”: My content is still stored on the filesystem as Jekyll-compatible Markdown files. However, build times via Jekyll or Hugo are fairly slow for my 2800+ posts (since 2000, baby) and I hate that. So #goldfrog indexes all posts in a sqlite database on disk. Post creation and edits go to the DB and to the filesystem, so I can still periodically sync the changes to the git repo I have checked out there. But all the list views, archives, tag pages, and search functionality go to the DB, and are really fast.

The Setup

This is really the app I’ve wanted for a long time.

  • It’s hosted on a Linode “nano”
  • The app builds on CircleCI and the binary is pushed to an S3 bucket.
  • I’ve got ansible playbooks that setup the VPS pretty much from scratch with Nginx fronting Goldfrog.


I really need to get my logging story fixed, and I’ve got some idea on adding basic metric tracking to the app.

#blogging #goldfrog

Steve Ivy

@travisci #goldfrog #blogging taking a code break to fiddle with ansible and make pretty pictures

~ # 03:04 ~

Steve Ivy

Progress today: post editing and deleting, many template updates.

I managed NOT to throw the laptop across the room when figuring out golang html/template :win:

Working on a @TravisCI build pipeline, here’s to again not throwing my laptop

#goldfrog #blogging #writetheweb

~ # 23:16 ~

Steve Ivy
Steve Ivy

RT @markboxapp: Did I mention the Beta is open? ping us @markdownapp if you want in! #markdown #blogging

~ # 18:52 ~

Steve Ivy

RT @markboxapp: We got Atom feeds working over the weekend. BEHOLD: #blogging #markdown

~ # 18:02 ~

Steve Ivy

RT @markboxapp: PSSST: @markboxapp now supports link posts: #markdown #blogging

~ # 21:28 ~

Steve Ivy

RT @markboxapp: So, 2012, and we can post from the web! #blogginghumor

~ # 13:39 ~

Steve Ivy

@kcunning A blog engine has long been my goto “hello world”. But then, I’m old. #dreamofthe90sisaliveinblogging

~ # 16:57 ~

Steve Ivy

Here we go again… #blogging #markdown /cc @scriptogram

~ # 14:55 ~

Steve Ivy

Blogs - first person POV, Streams - third person POV. Discuss. #activitystreams #blogging

~ # 05:24 ~