This page is to sketch out my tentative thoughts about adding check-ins to my website.
My history with check-ins
From October 2004 I used Plazes, the original social geolocation service. I met one of the creators of Plazes at a workshop I organised in early 2004 when it was still in its early stages. I used it until sometime between 2008 when it was acquired by Nokia and 2012 when Plazes was shut down by Nokia.
Foursquare was launched in 2009. My first Foursquare check-in was in September 2009. I used it similarly to Plazes. In 2014 it split up in both Foursquare and Swarm, of which the latter contained the check-in functionality. It led me to use Swarm less, and my last check-in was at the end of 2016.
I also used Dopplr, which was a slightly different type of check-in service. Where Plazes and Foursquare tracked specific locations I was at that moment, Dopplr let me indicate a city where I would be in the future. I first used it in June 2007, shortly after it launched and I suppose after hearing about it at the Reboot conference that month. It immediately was very useful, and I list it in 2007 as a tool I actively use. I last used it in 2012 to announce my month long stay in Copenhagen. It shut down in 2013.
In my site I have a posting category ‘plazes‘ for check-ins.
For a while I posted check-ins, from March until September 2019. It was based on automatically importing Swarm check-ins into my site, for which I started using Swarm again temporarily. Since then the pandemic made checking in superfluous. I only checked in three times afterwards, two times I was ‘outside’ in 2020 between lockdowns, and once last summer, on our way to our holiday destination. That last one was a check-in I created by hand on my site, without using an external service.
The purpose of check-ins
For me the purpose of check-ins is to help create serendipitous meetings with people I know, and with people that I don’t know but are close to me in the network graph. Crossing paths are an opportunity, and they are scarce, making spotting them valuable.
Such meetings can be aided in two ways:
- By checking in where I currently am, people I know or who know of me and who are in the same city at that moment could see me pop-up in their vicinity. This is like what Foursquare and Plazes let me do. It is how I met Peter.
- By checking into where I will be and when, people I know or who know of me and who also will be in the same city in that period. This too has been of tremendous value. By finding out beforehand that someone in my network and I will be in the same city at the same time, or because people in the city knew I would be visiting. In both cases it allows people to reach out to each other to agree a meeting.
These effects in the past for me were never frequent, but they happened often enough to make checking-in when traveling (and checking other’s check-ins in places I usually frequent) a habit.
Self check-ins
The silos I used to use have gone away or changed in other ways. The average life span of a digital service is way shorter than the average life span of a person, or than the time span in which a digital service might be useful to a person. This means I am convinced there is value in bringing back things that were useful in the past, especially if done in a way that does not create another silo or exploits its users.
It also means my own blog has been in existence longer than Plazes, Dopplr, Swarm, and indeed platforms like Facebook or Twitter. My blog is essentially the best place to contain check-ins. Check-ins are just another part of my avatar.
My blog is also limited: I know many people and many people know of me who do not read my blog, so they would not encounter such check-ins.
The needed check-in flow
There are three elements to a check-in
- Determining my location or venue (either current venue, or future location)
- Posting the check-in for a location or venue
- Ensuring discoverability of my check-in
Determining my location or venue
This is what Foursquare/Swarm supported well. They’d use your position and compare it to a database of venues. You’d then select the right venue from an overview and proceed to checking in. A database of location names is not a trivial thing.
For check-ins into a city you could use a geographic names database.
This is never easy, and well outside the realm of something you’d do on your own website. What can be done is, during a check-in, go and retrieve information from such a database, if a commonly accessible option exists, and use it. Experimental projects like Meridian aim to build on venue information and geographic names contained in Open Street Map, and contribute back to it.
Posting the check-in
This is the easiest part, as it boils down to creating a post on my site. Shaping that post can take some effort, depending on the amount of detail I’d want to give.
Does it link to the website of the venue I’m visiting, does it link to a page about a city I plan to be in? Does it show a map of the surrounding area? Does it link to a location in one of the Foursquare type of services? If it does anything like that it probably depends on information from the previous step.
In its simplest form I’d name the venue or city simply by mentioning it in the post, and at most add a URL manually or a short sentence about what brings me there. As in the last check-in I did on this site. That last check-in contains a nice SVG icon, and that type of thing would need to be in a template. For a simple check-in I could use micropub, probably for ease of use as a stand-alone form.
If I want to include retrieving and using information w.r.t. determining my location, then it would need several steps of interaction to help fill that submission form.
Ensuring discoverability
I think this is the hardest part. If the purpose is to allow serendipitous meet-ups, then any check-in must be easy to discover by others that I think would be worthwile to meet or others that think it would be worthwile to meet me. For these people to have to read my blog closely enough to know where I am / will be is too much to expect.
Silos like Dopplr had limited numbers of users, who were more or less by default in the same sort of groups I was in. Having an account was the right level of preselection. Swarm much less so, but it allows you to mutually connect with others and disclose check-ins to your existing network only.
This is the reason I used Swarm for check-ins before, as it was possible to check-in using Swarm (solving the problem of determining my location) and then post that to my site automatically (while the check-in in Swarm solved the discoverability part). It couldn’t be done the other way (initiate the check-in here, and syndicate it to Swarm).
What is possible is to start with the regular readership of this blog, those that follow my RSS feed. That is a limited audience, but definitely a group of people that I would like to meet if an opportunity arises. It would be up to them to overcome the friction of responding to a check-in, but friction is not a bad thing per se. I also think that travel itself has a higher threshold than before, making check-ins connected to travel stand out more as well. Another step would be to alert other types of services or websites, e.g. micro.blog or posting it to my Mastodon stream or my private twitter account. Or post it as an activity pub message on this site, so it is available to an approved list of activity pub followers.
I have been thinking about how to share check-ins or announcements of upcoming travel, and wrote that down in the wiki section: Individualised Plazes. Previously I imported my Swarm check-ins into this site, but I do not want to use such apps anymore.
The purpose for me of sharing location information usually was to enable serendipitous meetings. When I’m at or just left some place, or will be in some city. Crossing paths between me and people in my network have led and can lead to serendipitous meetings. Such meetings are valuable.
Another purpose can be sharing a little review of a place where I’ve been that day.
I’ve named check-ins Plazes (after the first social location sharing service I used), and travel plans Dopplr (the service that used to do this so well in the past). The forms are really simple at the moment, and I’ll gradually make them more useful to me. At the linked page I’ve added some considerations on how to make such posting more useful outside this blog as well, by determining location and location related information beforehand, and by enabling discovery after posting. For now just posting is a start.
I’ve posted an example of a check-in, and an example of a future location. I draft postings through a simple form on my device that uses micropub to post it directly to this site. The forms can be extremely simple because I only need to cater to me and my habits. My personal preferences are predictable to me, and thus easy to code into a function with a handful of variable parameters. Depending on the input of the form it adds the various microformats to make the posting semantically interpretable by machines.
I think there’s no risk for RSS readers of over-sharing (nor for site visitors as the postings won’t show on the site for now). Only when I think there might be an opportunity for meeting someone I’d otherwise not meet, will I share my location. Or when I want to post a review of a place. Unlike in Swarm/Foursquare there’s no gamification going on, nor a leaderboard each week, to nudge me to check-in as often as I can to score more points. No locations to be ‘mayor’ of. Just me going about my days.
A screenshot of my check-in form, and of my ‘dopplr’ form for future locations. Both extremely simple.
Also on IndieWeb News
Again a busy week. September and October usually are filled with events, and this often means many sessions and presentations. This year is no different. Also I have too many client projects on my plate, so I this week I discussed handing off some of my work to colleagues.
This week I
Had a half day meeting with my business partners discussing and working on internal things.
Did some invoicing
Discussed the tasks colleagues can take on within the scope of my work for my main client, for which the work is to start next week
Enjoyed being read to by Y. She’s getting better at reading fast, and likes to read to us before we read to her in the evening.
Prepared multiple sessions to present at and facilitate
Presented at and facilitated a half day session with the national statistics office on the incoming EU regulations
Had dinner at the ‘Greenland’ restaurant in Driebergen with our team (or rather 7 of the 9), to celebrate our 11th company anniversary. We had planned to go there a year ago, but a lockdown prevented it. My company, The Green Land, is named after this restaurant, because it is the place where in 2011 my business partners and I decided to start working togehter.
Created a presentation and presented to representatives of all Dutch regional water authorities about the impact of EU data regulations.
Had the weekly client meetings
Had a conversation with the World Bank colleagues I worked with in Central Asia and non-EU eastern Europe. Since the start of the pandemic my WB work stalled, but I’m still on their roster of consultants. The Russian war on Ukraine makes work in the region I used to be active in difficult, but there is still lots going on. I intend to contribute my work on EU data regulations and the EU data space as well as data and AI ethics to WB programmes. Not this year though, as I’m too busy with client work as it is.
Discussed the next steps for the interprovincial ethics committee with the representatives of all provinces in their ethics working group, and with the steering committee. We’re now at the point we can approach members for the ethics committee. Official launch will be in January by a deputy minister, for which the data was confirmed this week.
Took it slow on Friday morning, reading feeds, making some notes.
Took Y to her swimming lesson. She’s making good progress, keeping herself afloat without aids now and learning to swim longer distances under water. She’s slowly getting to the point where we can be sure she can get herself out should she accidentally get into the water somewhere in our surface water rich neighbourhood.
E’s eldest brother dropped by for coffee and lunch, it was nice to catch up.
Created the ability to quickly post a check-in or Dopplr style posting, as part of bringing that type of functionality within the scope of my own site.
A summary overview of changes I made to this site, to make it more fully a indieweb hub / my core online presence. The set-up of my WordPress installation also has been described.
Theme related tweaks
Created child theme of Sempress, to be able to change appearance and functions
Renamed comments to reactions (as they contain likes, reposts, mentions etc.)
in the entry-footer template and the comments template
Removed h-card microformats, and put in a generic link to my about page for the author in the Sempress function sempress_posted_on. Without a link to the author mentions show up as anonymous elsewhere.
Removed the sharing buttons I used (although they were GDPR compliant using the Sharriff plugin, but they got in the way a lot I felt.
Added a few menu options for various aspects of my postings (books, check-ins, languages)
Introduced several categories to deal with different content streams: Dutch, German for non-English postings, Day to Day for things not on the home page, Plazes for check-ins, Books for ehh books, RSS-Only for unlisted postings, and Micromessage for tweets I send from the blog. This allows me to vary how I display these different types of things (or not)
Displaying last edited and created dates to (wiki)pages
Added a widget with projects I support
Added to the single post template a section that mentions and links the number of Hypothes.is annotations for that post, where they exist.
Functionality related tweaks
Started creating pages as a wiki-like knowledgebase, using page categories to create the wiki structure
To show excerpts from webmentions I changed the template for a webmention in the Semantinc backlinks plugin, class-linkbacks-handler.php
Added a plugin to display blogposts on the same date in previous years.
Added plugin Widget Context to remove recent posts and comments from individual posting’s pages, as they cause trouble with parsing them for webmentions.
Using categories as differentiator I added language mark-up to individual postings, category archives. Also added automatic translation links to non-English postings in the RSS feed (not on the site). On the front page non-English postings have language mark-up around the posting.
Added a blogroll that is an OPML file with a stylesheet, so it can be equally read by humans and machines.
Added an extra RSS feed for comments that excludes webmentions and ping/trackbacks
Added a /feeds page
Added a Now page
Added a Hello page
Added a way to share book lists / feeds.
Stopped embedding slide decks, and stopped embedding new Flickr photos (as well as removed older embeds, currently 23 postings between January 2013 and July 2018 still have them, and 22 postings from June 2006 to July 2009)
Removed all affilliate links to Amazon books as it entails tracking
Added an Index (using a plugin)
Added my own basic check-in and Dopplr style posts
Other tweaks
Set up 2 additional WordPress instances for testing purposes (Proto and Meso)
I just watched this video about using the Map View plugin in Obsidian, which allows you to visualise the existence of notes grouped by geo-location on a map. The Map View plugin allows viewing and organising notes along a dimension that is currently missing in my notes, geographic location. I do have an overview of all my travel since the late eighties in my notes. The creator of the video, Zsolt is the creator of both the Obisidian Excalidraw and Brain plug-ins, which I both enjoy using and recommend. So when he suggests a plugin by someone else, it piques my curiosity.
Now I am of course thinking about integrating that with my check-in forms for this site enabling individualised Plazes. Specifically it may play a role in determining venue or location.
Would it be doable to, like I’m already posting from my notes to the site, automatically create an optional check-in record here when I create a geolocated note in Obsidian? Or the other way around, to have a check-in made through the webform also create a note in Obsidian?
I hadn’t really looked, but it turns out that Mastodon has incorporated microformats. It has h-feed and h-card, h-entry (a status), and h-cite (a boost). Plaint text properties (p-), e-content, and link properties (u-) are implemented. Indeed, they all surface when looking at a profile’s HTML source. This is what makes it possible to e.g. follow Mastodon feeds as h-feed, next to the existing RSS output and ActivityPub, and that e.g. Brid.gy can do its work to carry over any interaction on a Mastodon post to a blogpost here.
What I haven’t found was what I was looking for.
The ActivityPub protocol in its specs has several so-called Activity Types that drew my attention:
Announce, to well, announce things, such as any of the following
Arrive, which can be used to check-in at a location
Leave, to check-out, or as I sometimes do, to announce I’ve been somewhere after the fact.
Travel, which can be used to announce ongoing or planned travel.
In short ActivityPub supports FourSquare and Dopplr like check-ins and travel plans. I’ve recently added that to my site in terms of microformats and was still wondering how to create a useful stream for it. I’ve been thinking about an OPML outline with schema.org attributes, or a dedicated RSS feed or h-feed. An ActivityPub stream might be of interest too, or even more. There’s a PHP implementation of ActivityPub that includes these Activity Types as well, meaning there’s potential to experiment for me.
I wonder, are there any actual implementations of these ActivityPub types currently?
In reply to How can my posts integrate better with ActivityPub? by Chris Aldrich
I’m trying to add AP to my site here to be able to provide streams to approved followers of otherwise unlisted content in my site. E.g. travel plans like Dopplr did, or Swarm style check-ins (normally posted to WP with micropub, e.g. here). Both those activities exist in ActivityStreams and thus in AP. That would be possible to follow with various existing AP clients. If more people do it, it might be useful to create a client surface to combine the various travel plan streams of others I follow and show crossing paths etc.
@ton @ianthetechie @tijs
“I wonder, are there any actual implementations of these ActivityPub types currently?”
Yes. But they are not ready yet.
We demoed recently at https://fedi.camp –
also
https://digitalcourage.social/@markush/110751773166789529
https://digitalcourage.social/@sl007/110752650588487273
Call a cab via Fediverse.
We did also an Atlas of 1.9 mio. Places alongside their knowledge of wikidata and OSM !
Also @redaktor where Taxiteam is one of the clients will support them.
(ActivityPub Conformance means supporting all types, see Section 1, the Conformance Section for “the entirety”).
Also Trailsapp will use it probably;
https://matrix.to/#/!yOKPSTunBXKnkaReuJ:matrix.org?via=matrix.org
@ton @tijs ooh this is fascinating. Thanks for sharing these articles. I really need to read the ActivityPub spec one of these days. This really has my imagination going! A location based network similar to 4sq used to be where you get to simultaneously improve the quality of data in OSM. I could dig a simple EveryDoor-like flow for adding or confirming data. Wrap it in a nice app UX similar to Ivory and add features on top to show recent by location, upcoming travel, etc.. could be epic.