<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0"><channel><title>Meadow - Posts tagged with hobbies</title><description>Posts tagged with hobbies on Meadow</description><link>https://meadow.cafe/</link><language>en-us</language><item><title>Introducing Mochi — and thoughts on analytics and webmentions</title><link>https://meadow.cafe/blog/introducing-mochi-and-thoughts-on-analytics-and-webmentions/</link><guid isPermaLink="true">https://meadow.cafe/blog/introducing-mochi-and-thoughts-on-analytics-and-webmentions/</guid><description>&lt;p&gt;I&apos;ve been working on a new personal project for some months now. It started when I &lt;a href=&quot;/blog/tentative-steps-back-into-blogging/&quot;&gt;migrated&lt;/a&gt; my blog from Bearblog to a custom, statically generated site. I&apos;m not one to obsess about analytics (but god knows &lt;a href=&quot;/blog/falling-into-the-numbers-game/&quot;&gt;I have done so in the past&lt;/a&gt;) but I do care about when other people comment on the things I&apos;ve written in their own blogs. I&apos;m always happy to read what they say, be it good or bad.&lt;/p&gt;
&lt;p&gt;There&apos;s a cool technology floating around the Indie Webs called &lt;a href=&quot;https://indieweb.org/Webmention&quot;&gt;Webmentions&lt;/a&gt;, that is supposed to address exactly that issue. You write a post that tags my post and then let me know about it by sending an HTTP request to my Webmentions server. Sounds awfully technical for the average non-technical user, and it is.&lt;/p&gt;
&lt;p&gt;I spent some time researching this and saw a pretty clear pattern: webmentions have been set up for almost all sites whose authors have a technical background (often using a custom built server). But in the sphere of non-technical bloggers, almost no one has the ability to receive webmentions.&lt;/p&gt;
&lt;p&gt;Granted, there are some cool projects out there, (most notably &lt;a href=&quot;https://webmention.io/&quot;&gt;webmentions.io&lt;/a&gt;) that try to make it easy for anyone to add a webmention endpoint, all through a web UI. Still, it&apos;s not super clear how to use it. Though it&apos;s good that it exists. From what I&apos;ve seen this is the service that most non-technical people use.&lt;/p&gt;
&lt;p&gt;But all of this is about &quot;receiving&quot; webmentions. The sending of webmentions is actually more complex and harder to do for the average non-technical person. The best solution I found for this is &lt;a href=&quot;https://webmention.app/&quot;&gt;webmention.app&lt;/a&gt;, that finds and sends webmentions for every link in a given page. Still, it&apos;s a manual process, as the user needs to go to the app every time they want webmentions to be sent. It works, but it&apos;s tedious, meaning people won&apos;t do it consistently. There&apos;s the ability to automate it, but you need to write a script, which again is a barrier for non-technical folks.&lt;/p&gt;
&lt;p&gt;At the time I was also experimenting with different analytics services, most notably &lt;a href=&quot;https://tinylytics.app/&quot;&gt;Tinylytics&lt;/a&gt; and &lt;a href=&quot;https://umami.is/&quot;&gt;Umami&lt;/a&gt;. Both were great but I absolutely loved Tinylytics. So clean and simple to use. No weird, complex options. I realized that up until now my experience with analytics was constrained to corporate analytics: complex platforms catering to the &lt;em&gt;&quot;marketing department&quot;&lt;/em&gt; with tools to improve revenue. Here, in Tinylytics, I&apos;d found a platform that was truly aimed at the small web, with the average personal blogger in mind.&lt;/p&gt;
&lt;p&gt;So I set up Tinylytics on my site, but at the same time I could feel a seed starting to germinate in the back of my mind: &lt;em&gt;&quot;how does it work?&quot;&lt;/em&gt; As always, I gave myself to this thought and started experimenting with how I could go about building a simple analytics platform. It turned out to be a good technical challenge: hard enough to be fun, but easy enough not to be frustrating.&lt;/p&gt;
&lt;p&gt;Functionality wise, the first version of &lt;a href=&quot;https://mochi.meadow.cafe/&quot;&gt;Mochi&lt;/a&gt; was pretty much a carbon copy of Tinylytics, with some minor changes to accommodate the UX to my own personal preferences. Around this point I realized that I&apos;d built a platform that could be useful for others, but I didn&apos;t really want to make it public yet. It being so similar to Tinylytics, I felt it was &quot;immoral&quot;. So I sat on it. I kept using it as my analytics platform on my blog, but never announced it anywhere. I told myself I would keep it private until/unless it became a drastically different platform. For some months it was relegated to the background, I kept hacking on it when I had time, inspiration, or a bug, but it otherwise stood untouched. That is, until I started to seriously consider having it support Webmentions. In the past I&apos;d of course already heard about them and even set up a webmentions endpoint with webmentions.io, but I quickly grew discouraged with the technology, as everyone seemed to have webmentions set up, but no one was sending them. I just put it down as another failed attempt at bridging the gap between the islands that are personal blogs.&lt;/p&gt;
&lt;p&gt;Then I somehow stumbled on the &lt;a href=&quot;https://www.w3.org/TR/webmention/&quot;&gt;spec&lt;/a&gt;. &lt;em&gt;&quot;Holy shit, this is really easy to implement and it would be a great feature for Mochi&quot;&lt;/em&gt;! It became apparent that any analytics platform for the indie web also needed to support both the sending and receiving of webmentions.&lt;/p&gt;
&lt;p&gt;After some more months of hacking I think I can now say that Mochi is that platform I envisioned all those months ago. I&apos;m making this post as an invitation to anyone that wants to try it out. The project is &lt;a href=&quot;https://codeberg.org/meadowingc/mochi&quot;&gt;open source&lt;/a&gt; and in the near future I really want to make it possible for anyone to easily self-host it should they want to.&lt;/p&gt;
&lt;p&gt;Anyway, that&apos;s it 🤗 if you do decide to try it out please &lt;a href=&quot;/mailbox/&quot;&gt;let me know&lt;/a&gt; of any issues you encounter! The platform has some peculiar design choices (more on them below), and I don&apos;t know how the system will behave under stress. Currently, I&apos;ll only allow a max of 20 accounts to be created so I can see what happens, but if everything is stable then I&apos;ll quickly raise this number.&lt;/p&gt;
&lt;p&gt;Oh, and I know some people don&apos;t like analytics. Know that you can still use the webmentions functionality without using the analytics tracker!&lt;/p&gt;
&lt;h1&gt;Notes on technical details&lt;/h1&gt;
&lt;p&gt;Mochi is built in Golang, which allows for building and distributing a single binary that&apos;s easy to deploy and lowers the entry barrier to self-hosting.&lt;/p&gt;
&lt;p&gt;The main experiment I&apos;m running with Mochi is the database: I&apos;m using SQLite. This is mainly out of personal curiosity as I really want to see how the simpler SQLite holds up in this kind of application. To get around the &quot;single concurrent writes&quot; limitation what I&apos;m doing is having a separate database file per user, and then there&apos;s a shared database for less common operations (e.g., user settings and webmentions). Having one DB per user turned out to be a neat idea as it also enforces privacy (data from one user is very unlikely to be shown to another), and it makes exporting and deleting a user really easy and &lt;em&gt;safe&lt;/em&gt; (just export/delete their db file). &lt;/p&gt;
&lt;p&gt;I think this should work, though the whole thing is still bound by the filesystem I/O speed. That&apos;s why I&apos;m slowly increasing the allowed amount of accounts. We&apos;ll see. If it goes well I might do a follow-up post, as I think using SQLite is easier/better in most cases than requiring a more &quot;powerful&quot; hosted DB like PostgreSQL.&lt;/p&gt;
&lt;p&gt;Another thing I&apos;m experimenting with here are alternative modes of notifications. We all know that email is the golden standard, but from a developer&apos;s point of view it&apos;s so darn tedious to set up! So I thought &lt;em&gt;&quot;there are so many other communication services out there, why not use one of those?&quot;&lt;/em&gt;. So, for Mochi, I&apos;ve initially decided to send notifications through a Discord bot. Not only is it free (sending emails can get expensive) but it was also extremely easy to set up, and it also gave me a chance to play with the Discord bot API 😊&lt;/p&gt;
&lt;p&gt;Of course, the drawback here is that not everyone uses Discord, while most people do have email. But well, that&apos;s the benefit of building something that&apos;s &quot;free&quot;, I can do what I want and I don&apos;t have any stakeholders telling me to do otherwise. I might start adding other notification backends in the future (Telegram? Mastodon?)&lt;/p&gt;
</description><pubDate>Sun, 13 Apr 2025 14:23:36 GMT</pubDate></item><item><title>Crocheting Adventures</title><link>https://meadow.cafe/blog/crocheting-adventures/</link><guid isPermaLink="true">https://meadow.cafe/blog/crocheting-adventures/</guid><description>&lt;p&gt;I&apos;ve always wanted to learn how to crochet. Some of my earliest memories of my grandmother are of her sitting crocheting in front of the TV (which was so loud you were almost unable to hear your own thoughts). I remember asking her many times if she could teach me, it looked so fun and I loved the idea of being able to create things I could then wear, or even small plushies. But I never managed to get her to teach me. &lt;/p&gt;
&lt;p&gt;She always answered me with a variation of &lt;em&gt;&quot;You&apos;re a boy and crocheting is for ladies. Go play outside, or read a book instead. If you still want to learn when you&apos;re older I will teach you&quot;&lt;/em&gt;.  Yes, she was very &lt;em&gt;conservative&lt;/em&gt; in that way, and believed that me crocheting would somehow corrupt my little innocent soul. Old ways of thinking I guess, she later changed her views and ended up accepting queer people as normal &lt;em&gt;people&lt;/em&gt; instead of problems that needed to be fixed, but that&apos;s another topic. &lt;/p&gt;
&lt;p&gt;Alas, my grandmother passed away without me ever re-asking her to impart her crocheting wisdom after I became an adult. I&apos;ve tried looking at tutorials online but I constantly failed to understand them, and quickly got disheartened — what the hell does &lt;em&gt;&quot;half single crochet stitch&quot;&lt;/em&gt; even mean? &lt;/p&gt;
&lt;p&gt;My wife has known this has been something I&apos;ve wanted to do for a while so around 2 months ago she gifted me a &lt;em&gt;crocheting kit for beginners&lt;/em&gt;! It had everything I needed to learn in the form of hooks, a great yarn that was easy to work with, and (more importantly) a set of videos that I had to watch in order that taught me most of the different types of stitches and then walked me through making my own plushie wale.&lt;/p&gt;
&lt;p&gt;The wale ended up being more a ball with fins, but still, I now feel like I can at least understand other YouTube videos and I&apos;m ready to tackle (slightly) more complex projects!&lt;/p&gt;
</description><pubDate>Fri, 08 Dec 2023 01:34:00 GMT</pubDate></item></channel></rss>