val.town for instant custom integrations - including a bonus intend.do / Complice integration

LLM coding is SO COOL. Depending on what you’re building, you can make systems that work without knowing a thing about how to write code, and without even looking at the code that gets generated.

It’s incredibly good for building tiny apps that plug things together, which make it great for a Beeminder datasource. and in particular, I recommend a site called val.town which offers really easy microservices that are great for tiny API integrations that can eg handle a webhook and re-route it (like IFTTT but it runs custom code and is free) or can run at a particular time of day, and check something.

And you can build this just by describing what you want and maybe pasting in some API docs.

My first use case for this was just building a tiny system that lets me make it so that the webhooks I’m using (via IFTTT) to change my phillips hue light colors based on my active intend.do intention… only get through during daytime hours!

But then I realized they’d be perfect for implementing tiny intend.do (aka Complice) data source integrations! This is like the workflowy integration—basically it pulls from some other system some draft items to take care of today. And the Intend system has had a beefy Beeminder integration for years (one of the most heavy uses of the bm API actually) but it never had a way to get intentions auto-created for all of your bm goals due today!

And now it does. Check it out here. This example includes a detailed exposition of the prompt I used to create it in 10 minutes, which can help you understand what you need to do to make your own, whether its to send your panic-mode Beeminder goals to a your today list somewhere like Intend, or whether it’s to add datapoints to your Beeminder goals based on some other event happening.

If you want to use it with Intend, note that we have a webhook system that’s very powerful now and includes basically the same feature as the Beeminder arbitrary integration. So for instance, instead of using the beemarb system, you could use the webhook system, send it to val.town, and do some custom processing of the potential-datapoint before sending it to Beeminder. Like you could beemind only tasks matching some regex (which you can already do in Intend!) that are completed before noon! (kinda like my phillips hue thing above).

Anyway this is SO FREAKING COOL. If you build something like this (Beeminder/Intend-related or not) comment it below.

8 Likes

Thanks for sharing this! I have started using this a few days ago, it’s amazing - and now I decided to try and tweak something to reflect my own use patterns. So, this comment is mostly for anybody else who would like to also “fork” this val and try to change something in line with how they personally use both systems.

In intend, I have 9 spheres that basically cover everything I track in my life. (Hardly anything ever goes into “misc”). A few days ago I decided to also add corresponding tags to all my beeminder goals, so I could filter by them (like “t1”, “t2”, etc. - following the numeration in intend). And now I realized I could combine this, so that I don’t need to manually assign the intentions to spheres when I pull the goals due soon.

I am not that well used to TypeScript, so I just had ChatGPT rewrite the code to reflect what I need it to do for me. Something like this:

      .map((goal: any) => {
        const tag = (goal.tags || []).find(t => /^t[1-9]$/.test(t));
        const tagNumber = tag ? tag[1] : "?";
        return `${tagNumber}) ${goal.slug}: ${goal.limsum || "(no limsum)"}`;
      });

(I also changed other things for my use, but just wanted to point out this idea because assigning tags takes just a couple of minutes once, while manually numbering the pulled intentions may become a nuisance after daily repetition)

2 Likes