RIFFS + RAFF

This page is an experiment in more frequent publishing. I am forcing myself to have a “classic weblog”, so that I preserve at least some of the debris that I spew on the other blue sites.

I use my Stream for quick storage (capturing quotes, work screenshots, and throwaway ideas), my Twitter for stream-of-consciousness threads, and Bluesky for…I’m not really sure what for.

But I need this blog because I occassionally feel the need to write things with titles and a few paragraphs. And so that I can use this site’s RSS feed as a way to communicate with it’s subscribers.


I spent a couple hours yesterday cleaning up my Github repos for all the versions of this site I’ve created over time. You can go to v1.joodaloop.com to see the first version, and change the version number to go all the way up to v6. My personal favorite was v2, which honestly deserves to be resurrected in some way.

Screenshot of joodaloop.com v2

Wait a minute… did I say v6?

Yes, there were two versions after the site you’re looking at now, that I built but never started using because I realised I liked what I already had. Which is why all I did was launch version 4.5 of the current design. But you can see those failed redesigns at v5 and v6 if you like. They’re not terrible.

I make at least 2 sites a month, most of them are static and written in plain HTML and CSS as much as possible. In fact, a few of my minisites (like map.joodaloop.com are just a single HTML file written by hand. I really like keeping things as simple as they can be.

But I always run into the following annoyances as soon as more than one page is involved:

  • Any shared components (like navigation bars and footers) need to to be manually duplicated across pages manually.
  • I would often forget to update the <meta> tags (page title, social media cards) for each page to the correct values.
  • How does one add an RSS feed? By hand??
  • After one too many <p> tags I would start to miss the ability to write in Markdown.
  • I’d have to go find a CSS reset and typography stylesheet from one of my previous projects.

I’ve been told this is the moment when people turn to the dark side, and write their own static site generator — one that finally has the perfect, simple feature set and intuitive syntax. Luckily for all of us, I decided to double down on the site generator I already use: Hugo

So I put together Hugoloop, a starter that uses the simplest possible site structure for a Hugo site, and contains all the things mentioned in the list above. And everything that one might need is linked to in the README. To quote it’s introduction:

…the amount of Hugo-specific detail you need to understand is kept to a minimum. Your experience should feel as close to “edit some HTML, write some Markdown” as possible.

I’m trying out a new format on this site: conversations. You can expect to see it in different places/pages over time.

The design will probably change slightly in the future; but the more interesting questions are around what parts of the conversation I choose to display. Do I include random messages above/below the relevant slice? Do I preserve typos and “hmmm"s and “huh"s? How should privacy-preservation work?

Here’s an apt example (w/ Anjali):

i think conversations are the laziest tool for thought, because you’re just offloading cognition to the other person

well….

high variance

say more

they can force you into new avenues

think of them as an oblique strategy

they can also give you missing context, but that’s fulfilling a search function

but then again what is thinking if not search

think of them as an oblique strategy

such a good comparison, damn

but then again what is thinking if not search

search + reasoning

Gift Culture

I don’t have much to say here yet, the point of this post is to link you to Innovation depends on Gift Culture.

Gift exchange flip the Lemon Market problem upside down, because of the particular social rules around gift-giving and celebrating intent. Gift culture has sacred protocol: if you’re offered a gift, you must accept the gift, and you must reciprocate either in return or by paying it forward. If I offer you a gift, saying, “Here is all this information, promise and potential”, then by the rules of gift exchange, you are obligated to take it seriously, and you are obligated to offer some potential in return, for a window of time.

And this tweet:

I’ve talked to a lot of ambitious elders about this and the general shape of the answer i found was that those who were most fulfilled were those who gave back to others. they’re proud of the difference they made to people, not the artifacts they produced or awards they won

@visakanv

I might eventually collect enough material to turn this into it’s own page someday, but for now it exists because it’s a good summary of how I try to live.

joodaloop.com v4.5

It will only go live in June, July, August September (!!!), but I just finished a partial redesign for this site, and I’m rather proud of it. I’ve arrived at a place where every kind of post format or type has a place here – from this tiny post you’re currently reading, to frequently updated lists like Twitter Bookmarks.

The Writing page was the only one that really changed to accomplish this. It turned into a dense 2-column page with sorting by topic instead of post type. The other pages only received small layout touch ups and tiny typography fixes. Oh, and the dark mode blue got darker. But that was all.

Edit: I also added a new “chats” format right before I shipped this version.

Which is good! This website has been through 4 designs in total, and this latest version has lasted as long as all the others combined. Not that I haven’t tried to replace it. v5 and v6 redesigns happened in the background, but turned out to not be worth shipping. The current version is, in fact, close to perfect. Who would have thought?

Shipped a starter template for Telegram bots on Cloudflare Workers, using much of the code from Ellipsis, but making the D1 database optional. It creates a bot that acts as an interface to Claude, using the Anthropic API.

The goal was to keep initial setup as straightforward as possible (you should be able to run this without creating a local copy of the code), and I plan to make all future features work the same way. There’s tension between minimalism and demoing a full-featured app though.

Ellipsis

I just put together Telegram bot called Ellipsis, acts as a chat interface to Claude. Currently only accessible to me, and a couple friends.

Built with Hono and Drizzle, hosted on Cloudflare Workers with their D1 database acting as the storage layer. To start with it just has a simple 6 message context window, but I have a few more ideas that I want to try later.

Revstar

I am now the proud owner of what is the most beautiful guitar I’ve ever seen or played.

For the very fair price of $750 American, it comes with excellent P90s, stainless steel frets, a carbon fiber reinforced and satin-finish neck, and lovely build quality everywhere else.

If that wasn’t enough, Yamaha also ships it with Elixir Nanoweb strings and a well-padded soft case. Good stuff!

Inspiration

Brandur's Fragments

Simon Willison’s Weblog

Micro by Tom Macwright

Simon Collison's Journal

The Sym·poly·mathesy Journal