Finally, it's Monday again. I enjoy the holidays, but Sunday for five consecutive days is really pushing it. And it's not even New Year yet! Yeesh.

Links?

Alright, I'm testing the waters with a Semble collection this week. I didn't add much, just some things that caught my eye.

There were many other things that I saw this week--music and products, mostly--but if I'm being honest, putting together my collection all at once and clicking on the Explore tab made me feel like a slob at a fancy dinner table. That's my own problem, though. We'll see if I get over it if I space my bookmarks out.

Until then, if there's something specific you'd like to see, please let me know. I absolutely ADORE acting as a personal shopper. It's so much fun.

Week of 2025-12-22 (by Graham) — Semble
Links collected during this week.
https://semble.so/profile/graham.systems/collections/3mb5gn2jsdg2u

A new project?

PGlite and Tokimeki are in the above collection for a reason. I've been a Deck.blue user for a long time now, mostly because it's a great way to view images on Bluesky. I enjoy having a wall of art scrolling past on the side of my monitor while I work.

I made the decision to try Tokimeki out this week, and it was a nice change. The UI is more performant, and I appreciate the realtime feature. Unfortunately, the media-focused column mode doesn't preserve image aspect ratio, and in the realtime post mode, most images suffer from pop-in.

So... I'm writing a media-focused Bluesky client. It wasn't on my hard list of projects (whoops), but I caught myself researching how I would put it together, then I noticed I initialized a React Router v7 project, and before I knew it I was writing code. Funny how that works.

My working name is Artwall. My goals are as follows:

  • Display only media posts from Bluesky follows in a masonry layout

  • Subscribe to all following posts via Jetstream

  • Prevent media pop-in by preloading images in before rendering them

  • Auto-play GIFs and auto-play videos (muted)

  • Display following status on posting accounts

Those are my most-wanted requirements, but we'll see if they stick.

I mentioned PGlite earlier--why? Since I'm not planning to use feeds, I need to maintain my own local copies of an account's follows, mutes, and blocks to mimic a feed-like experience via Jetstream. Some accounts have thousands of those, and I want the experience to be as response as possible, so I needed a way to effectively cache all of that. I don't want to maintain my own infrastructure, and I would like this client to be 100% SPA--hence, I thought of PGlite.

And the good news--it's working! It's wild that I'm able to use Drizzle to query and migrate an entire SQL database, completely in the browser. Here's hoping that my interest persists, and that I'll have something to show you all next week.

Until then, here's to the New Year. Have a great week!