Micro Matt

Micro thoughts and mini posts.

At the end of the day yesterday, I added another layer of spam prevention to user registrations, powered by Akismet. Over the last 15 hours, it’s blocked 18 bot signups that slipped through our own filters (which blocked 587 bots over the same time period).

To implement this, I forked a Go library for the Akismet API, and updated it with Go module support, unmerged PRs, docs improvements, and tagged releases. Soon, I’ll also add this spam prevention to WriteFreely — I think many open instances will appreciate it.

#dev #spam

Thoughts? Discuss...

Continuing yesterday’s work on “outside contributors,” some new perspectives:

Now, there are three “person” concepts in Write.as: User, Team Member, and Author. The first two, User and Member, are private structures that primarily hold permission data and contextual settings (User: password + email for the platform; Member: role + email for the team).

An Author, however, is a public structure meant to hold publicly-known information, like a bio and post authorship. Most blogging platforms don’t make the distinction between an Author and a User like this. But this allows us to minimize data collection and eliminate unnecessary work for writers (a single-user blog doesn’t really need an author bio, because the blog is the bio).

I often think of our UX like various gentle slopes of increasing friction and weight — from simplicity to complexity, or zero to full data collection. With this new user structure, we can maintain a gentle slope from writing alone to writing with others. The experience for a single blog author doesn’t change at all — the added work only shows up at the precise moment someone decides they want to write with others, and specifically, that they want some kind of public authorship known to readers (that is, we’ll still enable you to have a multi-author blog that conceals the identity of individual writers).

#dev #teams #ux

Thoughts? Discuss...

Working on an “outside contributor” role for Write.as Teams that’ll support the new concept of an Author.

With multi-user blogs, the past idea of a [Write.as User] or [Team Member] as Post Author doesn’t fit quite right. We want to attribute posts to certain authors, but be able to revoke their publishing privileges if they leave the team. We also want to support Post Authors that aren’t necessarily regular contributors, and don’t need an entire Write.as account. So we need a new abstraction — and this lays the groundwork for that.

The only trouble so far, technically, is squaring our previous concept of one Post to one User with this new level and relationship: one Post to one-plus Authors (each the parent of zero-or-one User).

Screenshot of a new "Contributors" section of the Team management backend.

Thoughts? Discuss...

Doing a small experiment with alternative blog views this afternoon, as a study for a future upgrade to #WriteFreely’s theming abilities.

Originally inspired by “text-only” versions of news sites, plus a bit of Midnight.pub and Bear Blog, this one maintains consistent navigation between the index and post pages, and shows only the post title + dates on the index:

A screenshot of a test blog home page, with simple text, headers, and links.

The design here is inspired by Riley’s theme. Titles are inferred from the post body when none is given, or changed to (Untitled) when none can be inferred. And of course it respects the chosen Blog Format, so you can hide dates or change the order of posts.

Screenshot of an individual post, with a consistent header and the post title / date / body below.

Besides helping me figure out what common backend elements we might need across themes, this is giving me a chance to see how we might simplify the base blog CSS and possibly restructure the HTML to improve accessibility.

I could also see this being useful for people who want to give their readers a lightweight way to read their blog (without a ton of CSS or custom fonts). So I might add it to Write.as Labs as an alternative way to access Write.as blogs once it’s looking solid.

Thoughts? Discuss...

Reading a forum thread about professional themes on Write.as, I’m mentally at an interesting fork in the road: cater to the people who make things for the love of it, or to those who do it as the means to some professional end?

I think there’s a middle road to take, somewhere in there.

So far, I really built Write.as for the casual writers and people who make things for no reason other than they love to. It’s pure, it’s simple; it’s the reason I personally write — and I think raw, human writing comes from people who do it for the same reasons.

The same goes for digital aesthetics — there’s a place for beautiful design, and there’s a place for raw creative output. One isn’t necessarily “better” or more “right” than the other in all cases, for all people. They’re just different, like the country vs. the city.

This platform’s growth (in all meanings of the word) depends, in part, on catering to some kind of “professional” user class. But instead of swinging us over to stodgy, uptight professionalism, I intend to keep the product in that gray area between hobby and profession, amateur and expert, as much as possible. The line between these categories is truly blurry, when you look at it. So why should our creative tools be drawing it for us?

Thoughts? Discuss...

Went back to the gym today, for the first time in over a year and a half. I’ve been slacking on my health throughout the pandemic, letting up on my cleaner diet, giving into the social pressures to drink and eat whatever is around. I suppose it gave me several months of carefree socialization; time with people I wouldn’t otherwise see. But it hasn’t improved much for me personally, besides serving as another reminder that I need to take these “breaks” from disciplined habits very rarely, and spend much more time taking care of my breath, my weakening wrists, my slowly ballooning midsection. For now, I’m satisfyingly exhausted — and ready for more.

Thoughts? Discuss...

Taking a vacation from work for the first time in a long while — a week in the North Carolina mountains with family. I’m taking care of the crucial things, but otherwise giving myself the space to unwind for a bit. It’s probably been 3 years since I took a week off of work.

Thoughts? Discuss...

Trying something new today, where I schedule a section of time to do the less fun, but very necessary, tasks of the day. Email is this for me, so I’ve blocked off an “email hour” every day of the week.

Part of the struggle for me there is my overpowering perfectionism, how I read and re-read even the simplest of emails before I can send them. I’ve tried to get better at that, subverting my natural meticulousness for the greater good of letting someone know I got their message. Gone are the days I can drop everything else and quickly fix a bug or add a feature when someone mentions it; now I need to remember, triage, give an update, eventually address their issue, and remember to follow up. The process is more complex and often overwhelming for me, but the communication doesn’t have to be. Hopefully a little more structure will help.

Thoughts? Discuss...

We’ve had a lingering issue with the orientation of photos uploaded to Snap.as that I’ve finally fixed today. When I looked at it a while back, I couldn’t figure out what was causing it. After another go at it today, it turns out the issue was with the Dropzone.js library we’re using to resize images on the client side.

After playing around with Dropzone, and adding a Javascript library to decode EXIF data and fix the image orientation before resizing on the client side, I’ve landed on a server-side fix. Now, we’ll just upload the full-size image, and fix the orientation and resize the image on the backend. This will mean more bandwidth use and processing work on the server, but it permanently fixes the orientation issue as well as another issue with optimized images.

#snapas #bugfix

Thoughts? Discuss...

Just pushed some final changes for #WriteFreely v0.13, specifically the exclusive content feature powered by Web Monetization. I wasn’t going to include this in WF yet, since it previously required setting up an additional receipt verifier server. But now that there’s a publicly available receipt verifier, WF admins and users can enable this feature without any extra setup. Once I do a little more testing, I’ll merge that and then release v0.13!

Thoughts? Discuss...

Enter your email to subscribe to updates.