• With webmentions working, next up I want to tackle support for check-ins. Currently I'm using OwnYourSwarm to backfeed my checkins to my main site and I'd like to continue doing so with Tanzawa.

    Doing so requires that I add support for IndieAuth (so I can login using just my domain) and Micropub. I'm starting on the IndieAuth implementation, which means I need to actually start with a login page for users to authenticate (thus far I've been using the django admin).

    This is what it's looking like so far. Something feels off in the design of it, but I can't quite place my finger on what it is.

    The base login form
  • Yesterday when I shipped sending webmentions I ran into an error that didn't occur in development. Posting the webmention would work, but my response would timeout when trying to save content.

    When updating a post you're supposed to send webmentions, update your content, then send webmentions again. As I'm trying to keep server requirements as simple as possible I'm doing all of the sending inline.

    Looking at my logs what appeared to be happening was everything would just lock, then once my timeout occurred, I'd see my initial post request to Tanzawa come through, the timeout, and then Wordpress making a request to Tanzawa to retrieve it's mention.

    This was happening because gunicorn only has 2 workers by default, which wasn't enough to handle processing a long request simultaneously with an incoming request. Increasing the workers from 2 to 4 solved the issue.
  • Today marks 1 month since I got the first instance of Tanzawa live. πŸŽ‰

    Today I shipped support for sending webmentions. So now when I link to a post, Tanzawa will send webmentions. It's all done inline, so there's now a slow-down when saving. I should do it in the background, but I'm not sure I want to introduce redis/celery and all that complexity quite yet (or ever?).

    A webmention from Tanzawa


    I have a table you can view in the admin where you can see which posts sent which webmentions and if they were successful or not.

    I also shipped a small update to webmention receiving. When an existing webmention is updated, I now also update how the webmention is displayed. In the case of an update, the comment must be re-moderated.

    The final small "quality-of-life" update is when I save a post I now show a link in the success message to view the post.
    Small quality of life update
  • I fixed my webmention receive implementation - I forgot to include the <link> tag in the head of my base template. With this fix in place comments on my Tanzawa micro.blog posts should be start to be sent here as well.

    I also started on the other half of the webmentions: sending. Thus far I'm just trying to keep it simple and am using webmention-tools. I may switch over toΒ  ronkyuu as it seems better maintained, but it's good enough for now.

    I successfully sent my first webmention from my local environment to my blog. Yay! I think I still need another day or so before I can call it ready for the web.

    Incoming webmention sent from Tanzawa to my blog


  • Mostly bug fixes today. Colin let me know about a bug how Tanzawa was interpreting webmentions from his blog. The basic issues was that Colin keeps all posts for the day on a single page and uses an anchor tag to link to the different posts e.g. blog.php?date=2021-01-28#p4 . So a single webmention request will include all posts for that day.

    The mf2py-utils library I'm using to classify the microformated data as a comment works under the assumption that each post will have its own webmention. So when he linked to Tanzawa as post number two, Tanzawa showed the comment for post number one. It was an easy fix to make sure that the comment interpreting function filters by the target url as well.

    The other minor change is I've added the interaction count to the status list page as well. I haven't styled it yet, but I imagine it will become a brown circle. This makes it easier for me to see which posts have comments/likes and so forth.
  • Slept on the bug and yes appears that django-webmention is not decoding the response body before saving it to the database. I opened issue #23 to fix the issue.
  • I'm on a roll with webmentions today. While I initially planned to hold off on displaying them publicly until a while later, since I figured out a good design, I decided to ship them in detail pages as well. They're hidden by default with a badge indicating the number of interactions.Β  All mentions must be πŸ‘ed before they appear. Pages without interactions do not show anything.

    Webmentions show inline with their content.


    One thing I'm not entirely happy about is that by using the object tag to allow me to detect broken images is I lose the ability to lazy load them. i.e. img supports loading="lazy" and object does not. A waste of bandwidth and resources.

    It's not a huge issue as icons are small. Once I start integrating turbo I plan to to lazy load the webmentions as a whole, so no content is event sent until requested.

    I've also found a bug (or what I consider a bug) somewhere in the webmention stack (either in mf2py or in the webmention test tool, I think). The basic issue is emoji and other unicode characters come across as escaped unicode like \xf0\x9f\x98\xa2, Cleaning it the response body with the excellent ftfy (fixes text for you) takes care of the issue for now, but it feels like that should be unnecessary.Β 
  • Figured it out. My handler wasn't running because I forgot to set the default app config in my __init__.py. One hotfix later and now we're cookin' with gas.

    Webmentions working in prod!
  • Shipped the new webmention display in Tanzawa πŸŽ‰. There is one bug. When django-webmention registers a model, I have a signal listening to register my own TWebmention record to store parsed data, moderation data and so forth.

    Testing locally it worked fine, but my test webmention didn't seem to register it. Here's what it's looking like in prod:
    Real life webmentions in Tanzawa!
  • Refactored the design of the webmentions this morning. I added the number of un-reviewed webmentions at the top and put them in a details/summary tag. The author name links to their homepage. Below that is a link to the webmention source displaying only the domain.

    Reviews are handled via a big thumbs up or thumbs down on the far right. This bit isn't hooked up yet, but it will be soon enough. I also added a button to quickly take you to the new status page.

    Webmentions refactored


    Next I need to add an api / view to handling the approval / disapproval click. And a menu item on the left to view all webmentions would be handy as well.
Previous 50 of 60 Next