Micropub 2.0.9 Released

Micropub Version 2.0.9 was released. It includes support for media endpoint queries q=last, which retrieves the last image uploaded, as well as q=source, which is not fully fleshed out as a return option.

It also adds a key to the uploaded media from the Micropub endpoint so you can query items uploaded via the endpoint vs ones not.

Adds a filter to help generate post slugs from microformats data.

Indieauth for WordPress 3.3 Released

The 3.3 branch of IndieAuth for WordPress is now available.

  • PKCE Support is now present in Indieauth for WordPress. PKCE protects against intercepted authorization codes by ensuring a token endpoint can confirm that the client attempting to redeem an authorization code is the same client that requested it.
  • Token generation is now done using SHA256, as opposed to the built-in WordPress Hashing.

WordPress hashing combines key stretching with eight passes of MD5. MD5 by itself is not very secure, but the WordPress hashing is much more so. The reason why a hash that isn’t more secure isn’t in WordPress Core itself is the fact that the features require newer versions of PHP than WordPress’s minimum version.

The change to using SHA256 bumps the minimum PHP version of the plugin to PHP5.4. That said, WordPress itself has scheduled finally upping its minimum to PHP 5.6 in WordPress Version 5.2 scheduled to be released next month, and will be looking to leverage anything useful in those versions. That may also cause WordPress itself to change its hashing to something less controversial.

The 3.0 branch of IndieAuth has added a lot of useful features.

The last release added profile support for returns, which allows a client to get the name and avatar of the user associated with the token, for display. The WordPress plugin was the first IndieAuth endpoint to adopt this experimental option, which is still under development, and Quill had to be updated to support it as a reference implementation.

IndieAuth is a fairly stable plugin, but there are still opportunities in future for expansion. A few things I’d like to do in future.

    • Invalidate Tokens when a User Changes their Password
    • Bulk Actions to Expire Tokens
    • Implement Scope Support – Right now this is handled by whatever is being accessed, not the Indieauth plugin itself. This would be possible by mapping scopes to WordPress user capabilities.

Curious what others might want to see.

Indieweb Post Kinds 3.2.0 and Micropub 2.0.8 Released

Tonight, two releases of WordPress Indieweb plugins.

Micropub 2.0.8 was released, adding some minor changes to support the new check-in option offered in Indigenous for Android.

Indieweb Post Kinds 3.2.0 was released. It switches from SVG sprites to inline SVG icons, removes some extra files that were bundled as part of the plugin but only needed in the development version, and adds a basic template to display events and itineraries published via Micropub.

It also includes the latest version of Parse This, which handles the storage of microformats in WordPress as well as parsing and processing data from URLs for the link previews.

This adds a bunch of fixes to functionality, despite the fact that this is an incremental update to Post Kinds itself, it should be a better experience, as the ability to get title and data out of Youtube is back, along with enhancements to extract author information out of additional sites.

Thinking about Bridging

I am writing this post on my phone, which is a challenge in itself.

But at Indiewebcamp Austin this past weekend, I was trying to explain the realization that I had back at the Summit in June.

Bridgy, the prime example of that, was launched in Indieweb form in December 2013. It creates a bridge between Indieweb protocols and proprietary APIs. So you can post on your site, post the same on another site like Twitter(or ask Bridgy to do it for you). And any responses are sent back using Indieweb protocols.

This philosophy encourages inclusivity. It connects those trying to adopt Indieweb principles to those who don’t know what that is seamlessly.

Building these connections between the Indieweb and other systems means you don’t have to give up those systems to join the Indieweb.

Other similar initiatives cannot say that they place such a priority on this. It is a better way to build. It has brought people to the community in my opinion.

The Indieweb principles of modularity suggests you build your platform on pieces that can be swapped out. This was referring to devices, storage methods, etc.

Several large companies are collaborating on the Data Transfer Project, to allow you to move your data from one platform to another with one click.. but they aren’t necessarily thinking about syncing to keep usable backups in multiple places.

But between it and plurality, which suggests we encourage a variety of approaches and implementations, we didn’t as a community explain our principles of connecting things even if they don’t follow these principles. We have just done it.

I have come across this in trying to help implement a Microsub endpoint, which turns any input into the same format, so you can read it in a client that doesn’t have to know about the original format.

Trying to turn RSS, Jsonfeed, Microformats, etc into a single type of output is a challenge I am still working on. But I could go farther with that.

If you make everything interoperate, you don’t have to cut yourself off from one group, one data source, etc. You can bring everything together and the part of it that is yours is still under your control.

Simple Location 3.6.0 Released

There is a new update to Simple Locations which adds some new features.

  • A query option for Micropub was added in a prior version and adjusted in this one. This is currently only supported in the Indigenous for Android app.  It allows the Android app to query the plugin for the name of the current location, to display and edit in the app.
  • Wikimedia Maps was added as a map provider, which is displayable without an API key
  • There’s a new setting that only shows altitude above a configurable height.

The biggest feature is Zones. Zones is a geofencing feature. If your location is inside the zone, it will not display the exact location, only a textual description.

Zones consist of a name, a location, and a radius around that location. If you are posting in the UI, it will replace the actual location name with that of the zone, and set the visibility to protected to add the actual coordinates.

If you are posted via Micropub, it will set the same, unless the location visibility property exists, and then it will follow that. Currently, this property is only supported by Indigenous for Android.

So, what does this mean? It means I am safe to post to my site and know that if I’m in one of these locations, it will obscure it unless I say otherwise. This is the first step to more granular visibility of location allowing me to store it in all posts, knowing that it won’t be shared specifically in areas I don’t want it to be shown in.

Indieweb Publisher WordPress Theme Now Available to Try

Over the last months, one of the regular problems mentioned with the Indieweb on WordPress is the lack of compatible themes. Most themes do not properly mark up their content in microformats, or support some of the customizations that would integrate with Indieweb plugins.

I had already been working on my fork of the WordPress stock Twenty-Sixteen theme, called IW26. In my changing of the theme, I tried to limit being opinionated to the markup and plugin integration and leave the design to be mostly unchanged. On the backend, update the theme with any improvements to WordPress core and backdate any improvements made to _s, the starter theme that many WordPress themes are based on.

Independent Publisher is a popular theme that began adding microformats and Indieweb support. I had contributed to the theme. But development seems to be over and I haven’t gotten a response from the developer.

So, after much consideration, I decided to fork the theme. The Indieweb version, called Indieweb Publisher, strips out many of the specialty features the original theme had.  It is still an evolving work, but it is good enough for daily use.

What was removed:

  • Excerpt Options – Switched to only the decision as to whether to have an excerpt on front/archive pages. The type of excerpt to generate seems to me to be strictly plugin territory.
  • Multi-Author Mode – This was replaced with the Indieweb plugin’s setting for whether a site is a single or multi-author site.
  • Social icons menu – Again, seems like plugin territory to me.
  • Custom header used as a logo

What was added

  • Basic support for the Syndication Links, Simple Location, and Post Kinds plugins.
  • Option to show time on posts, not just date
  • Option to hide category display.
  • Custom logo feature to replace adaptive use of custom header
  • Genericons Neue replaced Genericons font set
  • Privacy Policy link if enabled in WordPress
  • Archive title and description functions and filters replaced custom coded functions
  • H-Card template page that can be used as front page
  • Set rel-feed if front page is not feed.
  • Footer widget
  • Switch to SASS for CSS generation
  • Replaced custom navigation with navigation from core implemented in WordPress 4.1
  • Started removing styling on microformats classes

Still being worked on is importing the Independent Publisher 2 layout that appears on WordPress.com and letting this be an alternate layout option, as well as taking full advantage of SASS file generation to remove duplication. I actually like the look of IP2 as well.

So, give it a try, give feedback and suggestions, and I’ll continue to iterate on both themes. You can download it from Github in a zip file and upload it to your site.

Someday, it may be worthy of an upload to the wordpress.org repo

How I Set up my WordPress Indieweb Website – 2019 Edition

This is an update to my 2018 article on how I set up my WordPress site.

Standard Plugins

  1. EWWW Image Optimizer(Link) – It reduces file sizes for images to ensure faster loading
  2. Pushover Notifications(Link)or the forked alternative Pushbullet Notifications(Link) for WordPress – This plugin sends notifications of site events to my phone. The Pushover version is actively maintained and allows for extensions.
  3. Simple Local Avatars(Link) – Overrides the default of using the Gravatar service for profile pictures to storing them locally. However, this plugin hasn’t been updated in years. May look for a new one.
  4. Avatar Privacy (Link) – Adds local avatars and custom default avatars, caches items from gravatar, adds opt out of avatars, etc. Should be a part of WordPress Core.
  5. The SEO Framework (Link) – Sometimes, I think about getting rid of all SEO plugins. I’m not really obsessed with this. This does add non-Indieweb markup for some sites that require it. It isn’t worth it for me to manually add this right now.  Last time I commented that I thought about getting rid of all SEO plugins. So I did.
  6. Antispam Bee(Link) – As an alternative to third-party solution Akismet, this plugin does a similar job without a third-party service.
  7. Hum(Link) – This is a simple URL shortener. So for each post, there is an equivalent URL address at di5.us. This allows me to give out easier to enter links to longer post titles.
  8. JSON Feed(Link) – Adds a JSON Feed to a WordPress site. This is an alternative to RSS as a feed. I’ve used it to feed my content to Micro.blog more effectively, as the specification was co-created by Manton Reece, who is the creator of that service. The plugin could stand some enhancement. I now am a contributor.
  9. Series(Link) – Creates a simple taxonomy called ‘Series’. I added this to my site to allow creating series of articles. There are other plugins for this, but this one is extremely simple.
  10. WP Photo Sphere(Link) – For the rare occasions that I post 360 degree images. Rare as in I’ve only posted one. Hasn’t been updated in a year and was throwing errors.
  11. Dimage 360 (Link) – My current solution for displaying 360 degree images.
  12. Social Network Auto Poster(Link) – I keep wanting to get rid of this thing. But I haven’t spent the time to replace it. Thinking of doing that soon.
  13. Simple Location(Link) – You can call this an Indieweb plugin, but it isn’t specifically an Indieweb technology(although it does use Microformats markup). It adds location and weather awareness to a post. So, you can click to add your location and the current weather conditions at that location to a post.
  14. Home Assistant for WordPress(Link) – I use Home Assistant for my Home Automation integration. Since it has an API, I wrote this simple plugin. A year after I wrote this, I have not added the ability to display information from any sensor and to update a sensor on the Home Assistant side from WordPress as planned. I use it right now as an enhancement to Simple Location. Instead of getting my location from the browser, it gets it from my Home Assistant installation, which tracks my presence.
  15. WP Term Images(Link) – Allows you to set an image for any category, term, or tag. It hasn’t been updated in a while, but even though there are a few improvements I’d make, it does the job. My theme displays these images on archive pages, as well as in the RSS feed.  I may consider running a fork of it so I don’t have to add this in all my themes.

The Indieweb Stuff

  • WordPress Webmention(Link) – Adds webmention support for WordPress. This allows communications between sites.
  • Semantic Linkbacks(Link) – Adds richer content to WordPress comments received by Webmention. For example, interprets them as reply, repost, like, favorite, mention, etc. This allows different displays and actions to be done with them.
  • IndieAuth (Link) – Creates an IndieAuth endpoint on your site so you can log into other services with your website credentials.
  • Micropub (Link) – Adds the ability to post to your site using Micropub. Uses the IndieAuth plugin for login.
  • Post Kinds (Link) – A replacement for the WordPress Post Formats which uses Indieweb post types. It allows you to respond to content on other sites, generates previews of those sites for context, allows you to post activity type posts(like watching, listening, reading, etc).
  • Syndication Links(Link) – Another project, which adds fields to a post for the corresponding versions on other networks. It also adds links to same to the post. It also adds a UI for posting to other sites, with support for the Bridgy service built in.
  • Indieweb Plugin(Link) – The Indieweb plugin is not only a plugin installer, but it contains tools for adding rel-me links(urls to your presence on other sites) based on your profile, declaring the default author for your site, and adding a simple h-card widget to show off a primary author.
  • MF2 Feed (Link) – Accepting that it is hard to get a theme that supports Microformats 2 markup, as there are only a few, this tries to add a side file to your site with the data available. I use this as a way of testing it for those who may have no other easy way to be Indieweb capable.
  • Refback (Link) – I quickly created this a few months ago. It is very basic. A refback is when you take referrers to your website(URLs sent when someone visits your site from another site), and process them as responses to your site.

A Few Choices

  • The theme I use is a custom one I built, but the most popular theme for Indieweb sites is Sempress(Link). I am currently using a fork of the WordPress Twenty-Sixteen theme(link) called IW26 that I modified for Microformats and support of the plugins I use. I have an alternative theme, a fork on the popular Independent Publisher theme called Indieweb Publisher(link). I’m thinking of switching themes occasionally to mix things up.

Bridgy

Bridgy now has a WordPress plugin(link) which acts as a UI for registering and posting to Bridgy. Oddly enough, I wrote the plugin, but don’t actively use it. I need to fix my handling of syndication. I deprecated the Bridgy plugin and moved a new version of the functionality into Syndication Links. I am now using it.

Bridgy is a service that you can link your accounts on places like Twitter, Github and Facebook(deprecated due API changes) to, and it will pull in comments, likes, etc from those sites and send them to your site to be integrated. This requires the Webmention and Semantic Linkback plugins to understand what is being sent.

The Marvelous Mrs. Maisel and the Catskills

I spent some time in the last few days watching the second season of the Marvelous Mrs. Maisel. I’ve always enjoyed period pieces, especially 20th century ones. This is set in 1959.

I can’t pretend I was a Jew in New York in the 1950s…my parents were though, although certainly not the economic level of the characters in the show. There are things I question. I’m sure I’m not the only member of an ethnicity who thinks that they did not quite get my culture right.

In the second season, the title character and her family go to Steiner’s Mountain Resort in the Catskills. The actual scene was filmed at Scott’s Oquaga Lake House in Deposit, NY. I’ve been through Deposit, although not familiar with this place.

Summers like the one pictured on the show were common, as the city was hot, air conditioning wasn’t really a thing, and flying was a much more costly affair than it is today. There were hundreds of Jewish resorts in Sullivan, Orange, and Ulster Counties.

The Concord Hotel, a setting on the show, and apparently close to where Steiner’s is supposed to be, is a place that I am familiar with, having been a guest there as a kid. I remember spending time at the Stevensville Hotel, and when it closed, the Brown’s Hotel, and only recall one time at the Concord. I also spent time at Kutscher’s.

The show tries to recapture the idea of it. By the 80s and 90s when I experienced these hotels, it was a very different time, but the things featured on the show brought back some memories. By today, that part of history is all gone. I still go up to Sullivan County, and I’ve driven or walked past the remnants of old Catskills resorts.

I would have liked to experience it in its heyday.

State of the Indieweb in WordPress

Every year, at the Indieweb Summit, we have the State of the Indieweb(it’s the year of the Reader, by the way). The head of the WordPress project gives his State of the Word. I even watched the Governor of my State give his State of the state.

As I go through my 2018 Year in Review, I wanted to cover the State of WordPress as it relates to the Indieweb, cover where we are and were I hope we are going.

While the Block Based Editor, aka Gutenberg, had no direct effect on WordPress and its Indieweb usage, it has had a serious effect on developing for WordPress and will continue to do so in the future.

We’ve had several community members who have opted to move off of WordPress. But we continue to, because of the market presence of the product, attract new people. So, concerns aside about the future of the WordPress project, it makes sense for the community to continue to evolve.

  •  IndieAuth Endpoint for WordPress
  • Micropub Endpoint Rewritten to use WordPress REST API
  • Weather for Simple Location
  • New Weather, Location, and Map Providers for Simple Location
  • Refbacks
  • Parse This, a post-processing and parsing library for WordPress split out and updated, now set to be used in a Microsub server
  • Yarns Microsub in beta
  • Support for syndication built into Syndication Links
  • Redesign of the UIs for Simple Location and Post Kinds
  • New code to allow the registration of custom post kinds
  • Attempt to store microformats in mf2 json and convert to jf2
  • New Widgets
  • Basic support for receiving Vouches added to Webmentions…though disabled by default
  • Template improvements to Semantic Linkbacks to improve the settings page and new property support
  • Additional Microformats 2/Indieweb Plugin friendly themes.

This is only a short list of things that came to mind when I read through the various changelogs.

All of these items reflect the coming together and polishing of a complete Indieweb experience. As we move into the end of the first month of 2019, here is what I personally am hoping to see.

  • The release of Yarns Microsub
  • At least one of the two theme conversions I worked on being released in the WordPress Theme Directory, giving us another option for individuals who better integration
  • Redesign, improvement, and enhancement of the Facepiles in Semantic Linkbacks.
  • Look at the future of Webmention and Semantic Linkbacks. Every year, there is talk of why they aren’t merged. This is partly to do with the storage design. It may be time to standardize the storage.
  • Improve MF2 Feed to generate a compliant feed for times when the theme cannot be modified to encourage more interaction
  • Improve documentation

While I’m not hoping for it, in the longterm, whether or not we should pivot to accept a block editor world for the Indieweb plugins is a matter for debate.

The alternative is to leave the block editor for article posting and add a UI into Post Kinds to allow for simple note and like posting in the admin. Or use Micropub exclusively.

But, we will all continue to plug along. What are you looking to get out of having a WordPress site and adopting the principles of the Indieweb community this year?

 

 

2018 Year in Review: Travel

Continuing the year in review update, I traveled 50,483 miles according to Google. Someday, I hope to store more of this data locally.

I visited Germany for the first time and took a second month-long sojourn in the Phillipines. I’m not counting the layover in Hong Kong as I didn’t leave the airport.

In the U.S., visited Seattle for the first time, as well as my third trip to the Indieweb Summit in Portland.

I did a quick trip to Orlando for the Parkeology Challenge, as well as spending some time with my family in South Florida.

I’m curious what 2019 will bring.

 

2018 Year in Review: Driving

Doing a series of Year in Review posts…in this first post, I am going over my Driving Year in Review. This is courtesy of Automatic. Automatic makes a device that hooks into your car’s diagnostic port. I have the Classic version, which pairs with your phone over bluetooth. I’m not sure how long they’ll continue to support it as they discontinued my device some years ago.

According to their stats, in 2018…

  • 15.4 Days behind the wheel
  • 9254 Miles Driven
  • Longest trip was 127 miles
  • Average 1.4 hours per weekday
  • Average fuel economy 27.6 mpg

I spent the month of August out of the country, so I only used the car 11 months of the year.

Leaving the WordPress Project

I’ve decided to leave the WordPress project. Not leave being a user of WordPress. but being part of the WordPress project as a contributor.

A few years ago, there was a call for Component Maintainers, and I asked what a Component Maintainer would have to do. I never quite got an answer, other than, “You are now a component maintainer.” So, for a few years, I tried to be the Pingbacks and Trackbacks component maintainer.

There is only one problem with trying to guide a WordPress component. Someone other than you has to care. Namely, anyone guiding the project overall. I’m not a Core Committer. I’m not involved with anyone in a leadership position. So, I would periodically try to get interest, but none came. So, this week, I decided to tender my resignation. I couldn’t find anyone to tender it to, so I had to do it in chat to ask to be removed.

This is something I think of emblematic of the way the WordPress project has worked for me. You can open a ticket, put a patch in, get no guidance, wait 3 years, and then be told your simple patch is being punted because no one who has commit privileges cares enough to review it. Does not really make me feel like newcomers have support. In defense of this, the project is so big and used by so many it can be easy to get lost in the shuffle.

Pingbacks and Trackbacks are a subcomponent of Comments. Comments in general have not gotten much attention of late. There hasn’t been a comment component meeting in ages, or any major feature work in this area.

But, after years of not making any progress, the other reason I’m pulling back is the direction the WordPress project is going on. For two years, the project has had development of anything not related to the Gutenberg editor pretty much frozen.

At the 2018 State of the Word, it was announced that Phase 2 would turn the Navigation menus, Widgets, and other Theme Content areas to Gutenberg blocks. Phase 3, in 2020, will focus on collaboration and workflows. and Phase 4 on multilingual sites.

I was hopeful when it was implied that the feature freeze was over and that, regardless of having a focus and a goal, other improvements could now get some energy. But, I fear after two years of Gutenberg sucking the oxygen out of everything else, that will take a long time.

I nearly resigned before, when I was contacted and told that all component maintainers should be putting their efforts toward Gutenberg or Gutenberg related matters.

So, I’ve tried Gutenberg. I’ve written some posts with it on sites. I’m not going to knock it and say that it is horrible. I think it has some positives and negatives. But it is indicative of where WordPress is going and what audience it is looking for.

I’m just hoping the project doesn’t change so much that I decide I want to stop using the software entirely. I’ve invested a lot in extending WordPress. But I can’t try to be involved in that direction when it is not the way I want to go.

Using the Last Seen Function in Simple Location

One of the features in Simple Location that doesn’t get much notice is the Last Seen functionality.

Simple Location adds a section to your WordPress user profile called Last Reported Location. It allows you to set the last reported location for a given user.  It reports latitude, longitude, altitude, and whether or not the location is public, private, or protected.

In the Simple Location Settings, you can set this to update each time you publish a post if the location isn’t set as private. So it would reflect the last post you made.

This feature can be used in one of two ways. You can add the Last Seen Widget to your page and display the last place you were seen. Alternatively, this can work in reverse. You can set it so your posts will set post location from the last seen location of the author.

But, what use is that if the only way a to update the Last Seen setting is to set it from a post(creating an endless loop) or to set it manually? If you always want to always set a default location, this can be an option.

However, that doesn’t work for me. So, I built a way to update your location from an outside service.

First, you need an IndieAuth token. If you installed the IndieAuth plugin, you can get one manually under Users->Manage Token.

curl -i -H 'Authorization: Bearer FAKETOKEN' -d "latitude=30&longitude=-115&visibility=public" "https://www.example.com/wp-json/sloc_geo/1.0/user"

Here is an example of updating your location via a curl command line command. It figures out which user based on the user of the token you created.

The parameters currently used are latitude, longitude, altitude(will be automatically derived if not present), and visibility(public, private, protected).

If you are successful, it will return ‘Updated’ and automatically lookup the name of the location you are at.

So, what can you do with this feature? Keeping in mind the day, though I call today Tuesday…Let’s say hypothetically you are in the package delivery business and you want to share your location with the people who are eagerly awaiting your deliveries. You could use this to send your location from your phone to your website to keep the display updated.

Alternatively, if you don’t trust the browser on your computer to know where you are, you could rig up a shortcut on your phone to update the location so it would be accurate if you post, for example on Android with Tasker.

There is more that is needed to enhance this feature. On my list for future is Geofencing…the idea of zones inside which the location would either be set to private or display a generic ‘Home’ or ‘Work’ etc. I already have the code to calculate this, but haven’t figured out how the UI would look. This would allow much more granular controls than the global privacy default.

Simple Location Version 3.5.0 Released

Version 3.5.0 of my location plugin, Simple Location, is now out(forgot to push a fix and had to release 3.5.1 as well). Simple Location is, as time goes on, anything but Simple. It is all about location, including the weather at your location. It adds this to posts, and offers several simple widgets to show current weather and current location on the homescreen.

The new version completely redesigns the interface inside the post editor to work in both classic and Gutenberg. It doesn’t integrate with Gutenberg in any way. It relies on Gutenberg’s compatibility functionality. Because of that, the box with the Gutenberg settings is now in the sidebar, rather than below, and expands to show the various options.

The interfaces with weather APIs like DarkSky and OpenWeatherMap were reorganized to improve the quality of the return data. And all data will be stored going forward in international units. While I am a Fahrenheit and Feet user, most of the world isn’t. So everything will be converted on the fly for display for those of us in the imperial system, making it much less fragile. Flip a setting and it changes.

Simple Location uses the WordPress REST API, and there are new endpoints for frontend use. The geocoding endpoint now has an option to return the weather as part of the lookup instead of requiring a second request. New abilities to lookup by airport code are also built in, mostly for the current conditions widgets. This will be fully functional in a future version.

For those of you worried about hitting or being charged for API usage on commercial sites, I added a simple weather provider courtesy of the U.S. National Weather Service. This will only work with locations inside the United States. It finds the nearest NWS Weather Station to you and uses the current conditions from that location.

There is a new Weather Station widget, split from the other Weather Widget, which allows you to display from a specific station.

There are a lot of good features here, but there will be more in future. So try it out.