created 2026-08-02
publishing my presence
a feature that i really wanted to add to my website was the ability to let people know when i'm around, or when i was last seen, or what i might be doing currently. this was heavily inspired by old instant messengers like aol, msn, and various other instant messengers of the past.
msn messenger, for example
this is a problem in two parts. first, i had to decide how i would display this on my website.
the ui
i toyed with various ways of displaying the status, but in the end, i settled on a design which seems to work fairly well on both mobile and desktop. i decided to put the indicator inside the main "profile" card on my homepage.
possible status values at the moment are:
- ⬤ online
- 😴 resting
- ⬤ away (last seen x seconds/minutes/days ago)
- ⬤ unknown
splendid. i now have a cute little visual indicator to let people know what i'm up to :)
with the ui design out of the way, i now had to figure out how to update the status indicator automatically, without me having to manually update the html code every time i wanted to step away from the computer or go to bed ;)
keeping my status up to date
a program running on my computer called hass.agent periodically sends present/away status updates to my homeassistant server
presence data stored in homeassistant
when someone visits my website, a request is sent to homeassistant to collect the latest status update. splendid :)
the result
the end result of this effort is that i now have a nice little indicator on my homepage which lets people know my active status, just like the good old msn days.
the result
in future, i plan to link the 'now playing' display at the top of the website to apple music. i may update this post or make a new post if i get around to doing this.
update 2026-08-08
i have managed to get the 'now playing' feature "sort of" working with apple music using iphone shortcuts. it's a manual process to share a song to the blog, but it's a one-click operation, and i've put the button directly next to my media controls :)