When I first started using IFTTT I wasn’t sure what kinds of things it would actually be useful for. The examples were kind of neat, but not overly interesting and for a long time I didn’t do very much with the platform. Recently that’s changed, and I’m now using IFTTT quite heavily for home automation and quantified self tracking. Here’s some examples of recipes I have set up:
- Add a datapoint to my “blog” Beeminder goal when I post new content.
- Store weight measurements from my FitBit Aria scale in Google Drive.
- Log when I enter or exit my home, my workplace, or my hackrrspace to my calendar.
- Save weekly and daily summaries of my RescueTime data to my email and Google Drive.
- Add articles I like in Instapaper to my Buffer queue to be tweeted later.
All of these are pretty simple tasks, but as I’ve gotten more and more attuned to what I could automate I’ve started to bump up against IFTTT’s limitations. I want more powerful capabilities so I can tackle harder problems, but the tools just aren’t there yet.
So, naturally, I started brainstorming a bit. IFTTT has a Maker channel which can send to and receive from arbitrary web URIs. Having this endpoint exposed means that a programmer like myself could build an extension system on top of IFTTT that would provide more advanced features, working with the IFTTT ecosystem. Here’s some things I think are possible:
- Timers which fire when a certain amount of time has passed after an event, or if they are not reset by an event in time. Useful for Beeminder integrations.
- Splitters and joiners, that provide 1:N and N:1 transformations for events. Joiners could be further extended into OR and AND gates, or N of M voting systems.
- State machines, where events trigger state transitions and may trigger other events.
- Latches, where only the first event triggers an output. This could also be modeled as a state machine fairly easily.
With these, you could build very complex and interesting systems that handle tougher problems than the literal one-to-one “if this, then that” paradigm can deal with. If someone else builds this, then I would certainly use it; otherwise, I may get around to it at some point myself.