Check your posts (notes, articles, etc.) are marked up with h-entry:


We found the following post h-entry on your site:




Add a photo!

<img class="u-photo" src="…" />


I recently bought a new Google Nexus phone, and switched my cellular service to Google Project Fi. This service does not work with Google For Domains accounts, so I had to set it up with my ancient and neglected plain ol’ GMail account. This presented an interesting opportunity, and some interesting challenges. This was a blank phone, devoid of apps or content I’d accumulated over the years as an Android user. I could add my Google For Domains account to the phone to get access to all of that, but the question was: why? A great many of the apps I’d installed were rarely used. Why bring all that cruft onto a brand new device? I’ve been contemplating how to leave Google for a couple of years. I dislike the fact that all of Google’s services are funded by advertising, and by building up deep knowledge of me and my personal habits to feed to advertisers. The singular account that is used throughout all of Google’s services certainly makes it easy for me to consistently enjoy those services; but it makes it really hard to elect to use different providers for different services. (Yes, I am acutely aware of the irony of buying a Google branded phone and using a Google branded cellular service, while also trying to minimize my use of Google solutions.) I’ve stopped using Chrome, in favor of Firefox. I set the default search engine to DuckDuckGo. I use an ad blocker and Privacy Badger to make a modest effort at minimizing how much I am tracked. I’ve been looking at FastMail as an alternative to Google Mail, Calendar, and Contacts. It looks perfectly serviceable for my tasks, and by paying a modest annual fee I can clearly speak with my wallet. If FastMail introduces changes I dislike, I can stop paying them and instead pay someone else. But I’m not the only user of email in the domain, and so any migration needs to consider those people’s needs as well. In the short term, I did add my Google For Domains account to my new phone. It caused me a surprising amount of friction, as I had to enable features for that account and disable those same features for my GMail account. I had to ensure I was using the right account for each service. No single configuration was taxing, but over time it grew to be very annoying, given the number of apps and services I had installed. Two weeks ago I made the switch to FastMail and removed my Google for Domains account from my phone. It was surprisingly easy. My sister, the other primary user of an email address, was able to import all of her old mail, calendar items, and contacts with only minimal guidance from me. I strive for Inbox Zero, so I didn’t have any email to migrate. It was a trivial matter to export my calendars and contacts and to import those into FastMail. The DNS MX records were updated, and everything has been fine since! The timing for switching my email has been convenient, as personally identifiable web tracking gets more and more commonplace. At least now Google can’t parse my inbox for how to advertise to me. Not that I was likely to see many of those ads, anyway. The FastMail Android app is perfectly serviceable, but does not directly integrate with the Android calendar or contacts applications. After some brief searching, I found DAVdroid. This has been a well behaved sync solution, and I’m happy to recommend it. I’m also to happy to donate money to this project. DAVdroid also turned me on to F-Droid, an alternate repository of free and open source Android applications. It’s a little clunky, but it allows me to install a great number of interesting and useful Android applications without going through the Google Play Store. DAVdroid, Pinboard, Simpletask Cloudless, and a handful of other apps have all made their way to my phone through F-Droid. I had tried both AndStatus and Twidere as alternate Twitter clients, but I found both to be lacking. I did find the WebApps Sandbox, though, which allows me to use the Twitter mobile client in an easy way. I’m still on the fence as to whether I want to even keep using Twitter; but that’s a post for another day. The new phone was an opportunity to limit my Google footprint. My GMail account could be used for Google services that are strictly necessary, and I could start using other services from other providers using whatever account I chose. It’s been an interesting exercise to identify functionality that I desire, and find solutions in F-Droid. Another interesting benefit of all of this effort has been for my 2012 Nexus 7” tablet. I had been regularly applying system updates, but with each new version of Android the tablet would get slower and slower. Apps took a long time to respond to input; switching apps took a long time; it was generally not fun to use any more. I flashed an older version of CyanogenMod, and elected to not install the Google Apps. The performance was noticeably improved. F-Droid allowed me to get useful apps installed quickly. I took a gamble and upgraded to the latest nightly snapshot of CaynogenMod available for this device (CM 12.1, or Android 5.1), and the performance has remained perfectly acceptable. Of course, not installing Google Apps means not using the Google Play Store which means it’s more hoops for me to jump through to install apps that aren’t on F-Droid. Some of these (like the Sonos controller) I’m willing to live without on my tablet, since I can install them on my phone. Others, like the Kindle app, I’m willing to forego altogether because Amazon is just as guilty of pervasive personal data collection. My local library has plenty of books available for me to read, so I’m not missing much there. I’m under no illusion that all of this effort will somehow keep me completely anonymous on the Internet. I know it won’t. But I feel relatively confident that I’m striking a decent balance, for the time being, between sacrificing all of my privacy versus not enjoying any of the benefits of the modern era.


Datetimes should be precise to at least the nearest second.


Syndicated Copies

Add URLs of POSSEd copies!

<a rel="syndication" class="u-syndication" href="…">…</a>


Add some categories! <a class="p-category" href="…">…</a>

Your h-entries should have, at minimum, the following properties:

  • e-content — the main content of the post
  • p-name — if your post has a name, use this classname. Otherwise, (if for example the post is a note), either leave it off or apply to the same element as e-.
  • dt-published — the datetime the post was published at, in ISO8601 format, with a timezone
  • u-url — the canonical URL of the post, especially important on pages listing multiple posts

It’s a common convention for the published datetime to be a link to the post itself, but they can be separate if you want.

There should also be some way to discover the author of the post — either link to your homepage (which should have your h-card on)from anywhere on the page with rel=author, or optionally embed a p-author h-card in the h-entry.

The web is an expressive medium, and as such there are many other properties which you can add to your posts. Check out the h-entry documentation for a full list.

Want to be able to use h-entry data in your code? Check out the open-source implementations.

Previous Step | Home | Next Step