monkinetic the blog

Posts tagged with 'web' (66 posts)

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

#mastodonapi #fediverse #programming #blogging #indieweb

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 ~

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

TFW you’re teetering on the edge between using the #microformats library to find h-cards and their properties and writing an entirely new wrapper to make finding #webmention comments “easy”

~ # 16:01 ~

Steve Ivy

Back to a nerd topic: implemented some of the #webmention server in my blog software this evening, and rearchitected the storage layer with an interface to make testing easier. #golang

~ # 05:09 ~

Steve Ivy

There a LOT of error cases when writing a #webmention server implementation #indieweb #goldfrog

~ # 19:57 ~

Steve Ivy

Repaired some stuff in #goldfrog around #webmention handling on weird responses (hello amzn redirects)

~ # 17:21 ~

Steve Ivy

I know I’ve done a good job integrating my social media posting into my site when I want to reply to my own posts. #indieweb #posse

~ # 01:02 ~

Steve Ivy

Obviously I need to add media uploading to my syndication code #indieweb #goldfrog

http://monkinetic.blog/2020/02/22/txt-fd6090d

~ # 20:15 ~

Steve Ivy

I added an edit button for Notes on this site and it’s like #twitter only awesome #indieweb

~ # 18:58 ~

Steve Ivy

wanting to be able to post from my phone has me learning about css grid and flexbox, so there’s that #css #webdevelopment

~ # 17:09 ~

New Posting UI on Goldfrog

I’ve started messing around a bit with javascript-enhanced UIs for #goldfrog. Rather than use all of JQuery, I decided on a small subset of Jquery’s functionality as implemented by Sprint.JS.

  1. I only load the JS for me, since I’m logged in.
  2. It’s only used on the home page to power the new switchable post form, and
  3. It powers a character-counter for the note UI.

Here’s the new posting UI:

http://monkinetic.blog/uploads/new_post_ui_goldfrog.png

I’m trying to implement some basic progressive enhancement - the forms work as is without javascript, but the switcher and the counter are niceties for me, the author.

#webdevelopment #progressiveenhancement #goldfrog

Steve Ivy

Jacky Alciné

Jacky Alciné is an active member of the #indieweb and #activitypub communities, and a web developer working out of Oakland.

Imma make this clear: I’m not building software for developers.

I’m working to building tools for people.

You shouldn’t have to know to maintain and secure a server to have your own independent identity online. You shouldn’t need to know what libsodium or similar library to be secure online.

That’s my objective.

https://playvicious.social/@jalcine/101366378320531511

#webdevelopment #indieweb #activitypub

The Craftsman's Jig

I really like a good #codeascraft comparison. From DeployHQ, via Zeldman:

Woodworkers and web developers have this in common:

Visit a professional woodshop and ask a master carpenter what her favourite tool is. You may find it’s not a tool in the traditional sense, but a “jig” she built. In woodworking, jigs are patterns or templates built to make repeatable tasks more efficient and outcomes more consistent. Building a one-off bookcase may not warrant building a jig. But, if you’re building three or four of the same bookcase, it’s likely worth building a jig first, then using that jig to build the bookcases.

Our jig consists of a small command line application which integrates publicly accessible API’s from these service providers

Taking the time to make the tools to help do the work is the best thing to do, and knowing when to take that time is an important part of an engineer’s maturing process (see #yakshaving, Code As Craft)

#codeascraft #webdevelopment #yakshaving

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 monkinetic.blog and be syndicated to Twitter. See my archive page (20 years worth), blue are posts and pink are notes

http://monkinetic.blog/archive

~ # 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…

http://monkinetic.blog/uploads/Screen 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!

#goldfrog #indieweb #blogging

Steve Ivy
Steve Ivy
Steve Ivy
Steve Ivy

Finished #webmention discovery in #goldfrog, all 23 discovery tests on https://webmention.rocks pass. :)

~ # 02:14 ~

Steve Ivy

Thank you #indieweb folks for https://webmention.rocks/

~ # 09:56 ~

Steve Ivy

For my next #indieweb trick: I’m working on adding support for Webmention in #goldfrog.

https://github.com/sivy/goldfrog/issues/9

Client:

  • Endpoint discovery (header, link, a)
  • Send basic webmentions
  • Send “special” webmentions (ie Likes)

Server:

  • Provide discovery (header, link, a)
  • Receive basic webmentions
  • Receive “special” webmentions (ie Likes)

Ultimately I’d like to break out my webmention code into a releasable #golang module that can provide reusable http.Handler functions that can be plugged into any Go mux that supports them.

~ # 00:00 ~

Steve Ivy

ICYMI: working on #indieweb in goldfrog https://t.co/9DKVvHYwzP

~ # 23:39 ~

Steve Ivy

Towards IndieWeb: POSSE and Notes

#posse #blogging #webmention #indieweb

https://t.co/15Q3wsMv9J

~ # 16:22 ~

Steve Ivy

POSSE is the #IndieWeb acronym for Publish (on your) Own Site, Syndicate Everywhere. It’s something I’m playing with in Goldfrog.

A common idiom is to differentiate Notes (small microblog-like posts) from Articles (longer blog posts with a title). Right now Goldfrog has a basic blog Post type, with (ID, Title, Slug, Tags, Body). I’d like to keep the posting experience as simple as possible, so I’m thinking about how to handle something that literally just has a Body (and Tags, because I parse and attach any #hashtags - see? - in the content).

My Posts have an ID, though a uniqueness constraint on the slug means I could use that instead. But Notes don’t have a title to “slugify” (it is too a word). Goldfrog also writes every post to the filesystem as a Jekyll-compatible markdown file, so I would need to figure out what format and filename/slug would be appropriate so that they get a permalink.

Url Options

  • 2020/01/16/note-ab43f6 unique hash id
  • 2020/01/16/note-13:25 HH:MM

Actual Progress

An upcoming build of Goldfrog will support new “kind” of Post, albeit only differentiated by the presence of a title. I’ve made a few UI and backend changes to support notes:

http://monkinetic.blog/uploads/Screen Shot 2020-01-17 at 7.58.03 AM.png

  • Notes get a slug that is constructed from the string “txt-” + a shortened hash based on the note’s content, like txt-8213d2c
  • Since notes are short enough to look weird on a typical post-detail page, I created a new “Daily Digest” page on the site that shows only the posts for a given day. This is the default target for the permalink for Notes. The slug is used as the id attribute on the note, so the link jumps directly to the note on the digest page. This results in a “permalink” like “YYYY-MM-DD/#txt-8213d2c”
  • The Syndicate options (currently for Twitter and Mastodon) are now enabled by default for notes.
  • Clicking the “post form” link takes me to a longer post form with options for a title, custom slug, tags, and a larger content area for writing.

Still to work out

  • I’m thinking about implementing Webmentions for Goldfrog, since I control the code.
  • I’m still pondering how to connect a post or note with it’s syndicated version, to allow likes from this site to propagate to the syndicated site. That feels… harder than I want to dig into right now, but I’ll be looking for ideas.

~ # 00:00 ~

Steve Ivy

#indieweb folks: how do you post a tweet via the API with a link back to the original? As in, why didn’t this link expand? #posse https://t.co/hiXKxJkQUG

~ # 19:18 ~

Steve Ivy

Back towards the IndieWeb: Another aspect to creating my own blogging software: I can finally start implementing some of #indieweb principles I’ve been watching for a while.

One of those is POSSE (Publi

http://173.255.215.158/2020/01/back-towards-the-indieweb

~ # 13:25 ~

Steve Ivy

Another aspect to creating my own blogging software: I can finally start implementing some of #indieweb principles I’ve been watching for a while.

One of those is POSSE (Publish Own Site, Syndicate Everywhere) - which means everything you write starts on your own site, and content is syndicated to the appropriate kinds of sites as desired. This could include things like:

  • Articles are syndicated via RSS (done, no brainer)
  • Short posts (notes) are automatically or optionally published whole to Twitter, Mastodon, or the microblog of your choice
  • Articles are automatically or optionally shared to a microblog site with a link back to your own site

Goldfrog + Twitter

While I generally find Twitter overwhelming and frustrating (not nearly as much so as the less-privileged do), I just finished adding a Twitter cross-poster to #goldfrog. I’ll be implementing a Mastodon cross-poster in the next few days (/me waves @ toot.cafe), now that I’ve figured out and implemented the pattern.

The Twitter cross poster will send the title, some text, and a link back to the post. So, let’s see if deploying the new feature worked. :D

~ # 00:00 ~

Steve Ivy
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

I’m not sure, but I think Userland Manila was the first blog software I used that had the new post form integrated right into the front page. Tonight I got #goldfrog doing the same, and I am SO excited. #writefortheweb https://t.co/dEGOZRbPyj

~ # 06:44 ~

Steve Ivy

hey #lazyweb help

end of docker file

FROM scratch COPY –from=builder /go/bin/myapp /myapp ENTRYPOINT [“/myapp”]

the this:

standard_init_linux.go:211: exec user process caused “no such file or directory”

what the heck?!

~ # 00:51 ~

Chris Krycho: Chrome is not the Standard

Chris Krycho wrote a thoughtful post about the state of browser development and web standards, and as developers, the tendency sometimes to see Chrome as the standard for what features browsers should be supporting. Chrome is not the Standard:

> Over the past few years, I’ve increasingly seen articles with headlines that run something like, “New Feature Coming To the Web”— followed by content which described how Chrome had implemented an experimental new feature. “You’ll be able to use this soon!” has been the promise.

> These are tradeoffs, plain and simple. Chrome ships new features fast, but they’re not always stable and they often have performance costs. Safari ships new features on a much slower cadence, but they’re usually solid and always perform incredibly well.

> That’s what makes the web so great, even when it makes things move more slowly. Sometimes — often, even! — moving more slowly not in the experimental phase but in the finalizing phase makes for a much better outcome overall.

Fellow #webnerds, it’s a good read.

#webdevelopment #google #webnerds

Steve Ivy

RT @aaronpk: As much as I enjoy the benefits of running my own server, I really don’t like running my own server. #indieweb

~ # 05:12 ~

Steve Ivy

At the same time, starting to get back into the #indeweb world with changes to #boxpub.

~ # 01:39 ~

Steve Ivy

Home sick on a Sunday (ew), hacking on boxpub and making my site a little more #indieweb. That feels good.

~ # 19:00 ~

Steve Ivy

App switching #webos #doitbetter #ios7 #WWDC

~ # 18:23 ~

Steve Ivy

Anyone know how to get Wordpress P2 to post status updates to Twitter? #indieweb

~ # 16:25 ~

Steve Ivy

Imaging a way that @t could have arranged the AWS outage to promote #indiewebcamp :P

~ # 03:04 ~

Steve Ivy

Man, wish I could have been @ #indieweb this weekend. You, my friends, are awesome. #keepitindie

~ # 19:01 ~

Steve Ivy

Finally bought @balsamiq Mockups. Fantastic app. #UX #UI #web

~ # 01:00 ~

Steve Ivy

back to working on blogging independence: http://t.co/FnbMZ3Tn and Skitch posting to http://t.co/No1xpceU #indieweb

~ # 22:46 ~

Steve Ivy

#indiewebcamp is where I wanted to be this weekend, instead having great time with family. #winwin

~ # 18:27 ~

Steve Ivy

@djchall @capndesign @rayners Jefferson Starship Troopers #webuiltthisscificity

~ # 05:48 ~

Steve Ivy

idea: browser extension that gives me a contextual menu item to insert the url for [list of open tabs] into a text area. #lazyweb

~ # 18:36 ~

Steve Ivy

about to lead my first #webex. not sure if it’s a good or bad thing.

~ # 18:28 ~

Steve Ivy

what is a user’s “space” in the #federatedsocialweb? I’m calling it a “node” for now. http://bit.ly/bv34fr

~ # 23:51 ~

Steve Ivy

next up: @blaine on #webfinger

~ # 19:26 ~

Steve Ivy

Working some on my #diso presentation for #fws. What does #diso mean to you now? #openweb #socialweb

~ # 21:25 ~

Steve Ivy

congrats @t on the move to Mozilla! http://bit.ly/bQWVCr - webstandards++ #diso #openweb

~ # 13:48 ~

Steve Ivy

Tantek Çelik on DiSo 2.0: Down to Brass tacks: http://bit.ly/bAeIk6 #diso #openweb #falcon

~ # 02:03 ~

Steve Ivy

@toddbarnard How is does #webm make Flash any more obsolete than HTML5/H.264? Much flash video content already in H.264… #flash #html5

~ # 16:56 ~

Steve Ivy

Of the various web conferences, #IIW is one I’d love to get to one of these days #openweb #diso #openid

~ # 15:07 ~

Steve Ivy

Wishing I was at #iiw, hearing more about #openidconnnect. #openweb #diso

~ # 19:34 ~

Steve Ivy

Wishful Thinking Day: Wish Facebook would support Salmon to send comments there back to my blog. #facebook #openweb #salmon

~ # 13:46 ~

Steve Ivy

Also, will be nice when my blog supports Salmon. :-) #salmon #openweb

~ # 13:46 ~

Steve Ivy

I thinking about moving all my profile info to my website, and simply link from my FB profile there. (via @steveivy) #openweb

~ # 14:10 ~

Steve Ivy

@bradfitz congrats on #webfinger rollout! Now let us point updates-from to another service, and add #poco endpoints!

~ # 19:01 ~

Steve Ivy

is there an iphone app that lets me annotate photos, Skitch-like? #lazyweb

~ # 13:37 ~

Steve Ivy

Is it true that in 2010, Yahoo’s SREG/AX support is still “in testing”? What the heck is to hard? Is Google’s any better? #openid #openweb

~ # 14:11 ~

Steve Ivy

@leahculver talking about OAuth. Surprised this still has to be explained/evangelized. #oauth #openweb #gilt_nyc

~ # 01:50 ~