OS theme
Dark theme
Light theme
My iPhone battery
My iPhone Wi-Fi
Current motion
Click for current location
👈🏼 🕸💍 👉🏼
Skip to main content

Learn more about me. Email me at

cleverdevil

cleverdevil

cleverdevil

cleverdevil

cleverdevil

cleverdevil

www.npmjs.com/~cleverdevil

cleverca.st

trakt.tv/users/cleverdevil

mastodon.social/@cleverdevil

$cleverdevil

 

IndieWeb Summit 2019

8 min read

I had the great pleasure of spending this weekend in Portland, OR for the 2019 IndieWeb Summit. IWS is my favorite event of the year, as it gives me the opportunity to spend time with so many smart, like-minded, principled people who are interested in using technology to make a positive impact on the world. This year’s IWS was a runaway success, selling out for the first time ever, and featuring some truly great sessions, keynotes, and projects.

Day Zero: The Pre-Party

On Friday evening, a large subset of the attendees gathered at Pine Street Market to share in food, drink, and community. It was fun to reconnect with IndieWeb friends like David Shanske, Aaron Parecki, Tantek Çelik, Marty McGuire, Jacky Alciné, and Malcom Blaney. Much fun was had by all, and the post-party festivities carried on well into the night.

Day One: Keynotes and Sessions

Keynotes

5d17a64c2daf2f84f031723d_IMG_0226.JPG

The next morning, we kicked off the summit with coffee and breakfast, followed by some great keynotes.

First up, Tantek gave a brief state of the IndieWeb presentation, and shared details about the IndieWeb’s Code of Conduct, our use of color-coded lanyards to give people a choice about whether or not they should be included in photos, and our use of pins to enable people to display their preferred pronouns.

Next was fellow Micro.blog community member Kitt Hodsden who gave an inspiring talk on contractions and expansions, which really set the tone for the rest of the summit. Kitt should be very proud of both the content of her talk, and her wonderful, passionate delivery. Well done, Kitt!

Continuing the thoughtful keynote presentations was Jordan Brady, a native of Portland that I met several years ago at a Homebrew Website Club meeting at the DreamHost PDX offices. Jordan shared her story of changing her domain during her job search. Her experience shined a light on the challenges of being a woman in tech.

Marty McGuire followed, with an interactive keynote about his IndieWeb experience from his iPhone. It was very cool to see how far we’ve come in the past few years, with native mobile apps like Indigenous by Eddie Hinkle, and deep integrations thanks to iOS Shortcuts. Kudos to Marty for presenting the entire keynote directly from his iPhone.

Finally, Jacky Alciné closed the keynotes with an exploration of how to make the IndieWeb available for all. Jacky is a really thoughtful guy, and I enjoyed hearing his perspective.

Lightning Intros

After keynotes, all IWS participants were encouraged to give brief, 2-minute introductions, along with demos of their personal websites. During my introduction, I talked about the importance of preserving and owning your memories, and showed how my website helped me cope with the loss of my sixteen year old dog Winston earlier this year.

Sessions

5d17e52b6ad3cb4f3e219a19_IMG_1304-p-1080.jpeg

After a group photo and lunch at local Portland food carts, we returned to the venue to plan out the rest of the day. IWS uses the BarCamp format for session planning, where attendees lead interactive session proposals, and build the schedule together. We came up with quite an impressive collection of sessions!

There were a lot of great conversations, but I’ll touch on three of my personal favorites:

  1. “Follow That Bird” – This session was proposed by David Shanske, and addressed the problem of discovery. On platforms like Facebook and Twitter, it is easy to just click the “follow” or “friend” button, and following / friend lists help users discover other people. On the IndieWeb, we’re still figuring out the mechanics of how to improve this user experience, especially in social readers like Together and Monocle. Lots of great discussion all around, and this session ended up inspiring my project for day two, which I’ll talk about shortly.
  2. Private Posts – I ran this session, and we talked about another problem that is neatly solved by traditional social platforms: sharing content privately. Again, some great discussion about how to solve this problem in the IndieWeb. Thankfully, there’s plenty of prior art out there to build upon. I’m looking forward to working on solving this for Known, which is the CMS I use for this website.
  3. Possible Futures and IndieWeb – An extremely engaging and interactive session facilitated by Ariana Lutterman. Ariana guided the group through the process of exploring the many possible futures for the IndieWeb based upon emerging signals of change through the lens of growth, collapse, discipline, and transformation. We brainstormed on future implications across a number of axes – STEEPV (social, technological, environmental, economic, political, and values). Finally, we used our exploration to write headlines from the future. A really thoughtful and fun exercise. Many thanks to Ariana for guiding us.

At the end of a very long and engaging day, we split out into groups for evening activities. I joined a great group of nine for dinner at Jackrabbit, which featured an impressive and delicious 4-pound steak that we shared. Yum!

Day Two: Creative Hack Day!

IndieWebCamp Logo

On Sunday, we started things off with some tasty vegan breakfast options, and then I headed off to the first ever meeting of the Known Open Collective. It was great to finally connect, at least over video chat, with Marcus Povey, Jeremy Cherfas, and Paul Lindner. We definitely missed having Ben Werdmüller at the summit, but all send our best to him as he deals with this complicated thing we call “life.”

For the rest of day two, I focused on two things – helping other people and personal projects.

Inspired by the “Follow that Bird” session from day one, I decided that it would be extremely valuable to focus on the problem of discovery. I chose to update my site to make it easier to subscribe to my website, and to discover who and what I am following. The first, smaller part of the project, was to update my Subscribe page with more detailed instructions on how to subscribe to one or more of the feeds that are available on my website.

The second part of my project was to build a way for people to see what I am following. There is a wealth of information on “following” on the IndieWeb wiki, but none of the approaches discussed for documenting subscriptions really sat right with me. I am a fan of the DRY principle, and I don’t like the idea of manually creating “follow posts” when I have a perfectly serviceable source of truth for my subscriptions in my Microsub server. Thus, I embarked upon a project to automatically generate a page on my website that displays an up-to-date list of my subscriptions from Aperture.

Thanks to some enhancements by Aaron Parecki to Aperture, I was able to create a beautiful Following page that gives visitors to my website a way to see exactly what I am following in my social reader. They can use this to discover new content that they may enjoy. Even better, if you parse my Following page with a microformats2 parser, you’ll find that it is an h-feed containing h-entry “follow posts” with a u-follow-of property for each feed that I subscribe to. The only missing piece is that Aperture doesn’t yet provide me with the date and time that my subscription was created. Aaron has indicated that this is something he’d like to add, and once he does, I’ll update my page to include that data.

At the end of the summit, participants demoed their projects and progress before we closed out the summit. My personal favorite demo was from Malcom Blaney and Gregor Love, who demonstrated one of the first implementations of subscribing to private posts using AutoAuth. It was awesome to see private sharing in action, and it gives me confidence that 2020 could be the year that we solve this problem for good.

IndieKaraoke

Once the summit wrapped, a small group of us enjoyed what is becoming a wonderful annual tradition: IndieWeb Karaoke night! This year, we celebrated at Voicebox Northwest thanks to our wonderful host Lillian Karabaic. There was singing. There was laughing. There was a non-stop stream of incredible IndieWeb lyrical jokes:

  • “Bow down before the Zuckerberg. You’re going to get what you deserve.” – To the tune of Head Like a Hole by Nine Inch Nails.
  • “If you want to destroy the silos (whoa oh-oh), POSSE first, and then walk away!” – To the tune of Undone by Weezer.

We’re a bunch of very lovable nerds. I’d especially like to call out Fluffy for her amazing energy at karaoke. She made sure that fun was had by all.

Conclusions

Thank you so much to all of the organizers of IndieWeb Summit for doing such a great job building an inclusive, fun, and enjoyable event each year. This year’s summit was the best yet, and I have no doubt that next year will be even better.

I love you

 

Tracking My Movie, TV, and Podcast Activity

6 min read

As part of my continuing efforts to preserve and capture my memories, I’ve been spending some energy adding more capabilities to my website. I already capture photos, recipes, blog posts, status updates, and other more traditional types of content. In addition, I’ve been privately tracking my own location continuously for months now, including the ability to see some current details about my location and status. I also use the excellent OwnYourSwarm service from Aaron Parecki to record check-ins at specific locations on my site.

Last week, I realized that I was missing some data on my website that would add additional context when exploring my memories: my TV and movie watching history, and a record of what podcasts I listen to. As of today, I am now automatically tracking all of this data, and I’m happy to share a bit about how I made it happen.

Movies and TV

Let’s start with how I am tracking what movies and TV shows I watch. As it turns out, there is already a wonderful service out there for tracking this data called Trakt, which is a startup based out of San Diego. Trakt has done the hard part for me, with an extensive and complete database of movies and TV shows for me to pull from, and a host of great apps that use its powerful API to help users put data into their Trakt account. I am personally using the Watcht app for iOS to manually ad TV episodes and movies to my watch history on Trakt, and to show me a calendar of upcoming TV episodes for my favorite shows.

Trakt Logo

But, being an IndieWeb community member, I want to make sure that my memories don’t get lost in the event that Trakt goes away one day. In addition, I want to be able to see my TV and movie history in the context of the rest of my website’s content. So, I needed to find a way to automatically sync that data to my website.

At first, I thought about using the extremely capable Trakt API to periodically sync to my website, but then I noticed that Trakt Pro members get access to an Atom feed of their watch history. Working with a custom REST API takes a lot of effort, while integrating with a standard feed format is extremely easy. So, I happily paid for a Trakt Pro subscription!

I created a Python script which periodically parses my Trakt feed and then creates entries on my website for each movie and TV episode I watch. It only took me about an hour to put the whole thing together.

Sidebar: Automatic Tracking from Plex

Plex Logo

As you may already know, I have a great collection of digital movies and TV shows. I use the outstanding Plex Media Server to enable me to stream and sync content to all my devices. As Eddie, my co-host from Two Dads Talking, recently mused, tracking activity automatically is much more reliable than remembering to manually track activity. Trakt provides a Plex plugin that automatically syncs your Plex history to Trakt, and once I had that installed, a significant chunk of my activity is now automatically synced!

I still have to manually track content watched outside of Plex, like live TV from Hulu, and content consumed on Netflix, but it’s a good start.

Podcasts

I’m not only a podcaster with a microcast and a podcast, I’m also an avid podcast listener. I listen to podcasts on my daily commute, to relax after work, and to kill time on airplanes. Wouldn’t it be great to have that history tracked on my website as well? As I mentioned above, tracking that history automatically is greatly preferable to manually having to log every episode I listen to. With that in mind, I set out to see if I could capture my activity.

Overcast Logo

I use the wonderful Overcast podcast app for iOS. Overcast is created by Marco Arment, who is also a prolific podcaster. It’s a fantastic and pleasant app to use, and is perhaps my favorite iOS app ever. Overcast has a sync service and web frontend available for users at overcast.fm. Not only can you listen to podcasts in your web browser on overcast.fm, you can also export an extended OPML file that contains all details about your account, including a listing of all podcast episodes you’ve ever listened to. Bingo!

I whipped up a script that logs into my account at Overcast.fm, then downloads a copy of this OPML file, and uses it to sync my history to my website. It works a treat, but I will caution that Marco seems to be rate limiting that OPML export pretty aggressively. For the time being, I’ve limited my sync to once daily, and I’ve also contacted Marco to get his input on how I am using his service. In an ideal world, I’d love to see Marco add a standard RSS, Atom, or JSON Feed for Overcast paid subscribers similar to what Trakt has done for Trakt Pro users. In the meantime, I’ll be conservative about how often I sync and await a reply from Marco.

Why Track Activity?

You may be wondering why I want to track all of this information. Eddie and I briefly touched on the topic in the last episode of Two Dads Talking, but it really comes down to the fact that our memories are precious, and the more context I have when looking back on my life, the richer my appreciation will be for the life I’ve been blessed to live.

During the process of adding these new types of memories to my website, I also have added a monthly “recap” feature which has been one of my all time favorite enhancements. I like them so much, I’ve added links to the last twelve monthly summaries to my home page to surface them. My favorite examples of monthly summaries so far:

  • January 2018, which marked my departure from DreamHost, the beginning of a new chapter in my career, and my second viewing of my favorite musical of all time.
  • July 2018, which includes travel all over the globe, some progress on my Indiepaper project, and outdoor movies in my front yard with my kids.
  • November 2017, which includes a trip to Australia, the acquisition of the best car I’ve ever owned, and my son’s first ever NFL football game.

I’m delighted to continue enriching my database of memories, and really happy with the way my movie, TV, and podcast tracking is shaping up so far.

 

IndieWeb Summit 2017 Recap

3 min read

On June 24-25, I attended my first ever IndieWeb Summit in Portland, Oregon. IWS is:

...an annual gathering for independent web creators of all kinds, from graphic artists, to designers, UX engineers, coders, hackers, to share ideas, actively work on creating for their own personal websites, and build upon each others creations.

IWS 2017 was graciously hosted by Mozilla in their very cool Portland office, which provided fantastic video conferencing gear enabling people from around the world to join in. Day one kicked off with keynotes providing an overview of the IndieWeb, the state of the IndieWeb, and real-world examples of IndieWeb sites. Following the keynotes, attendees had an opportunity to introduce themselves and show a demo of their own personal websites. In my introduction, I showed off my On This Day implementation, along with a live demo of my website automatically logging when I watch media on my Plex server.

The group then adjourns for lunch, followed by a Barcamp-style scheduling session, where individuals can propose topics of conversation, where we quickly filled four tracks with amazing hour-long sessions for the day. Topics included WordPress, specialized Micropub clientspersonal website designs, voice and the IndieWeb, and a session that I proposed on creating a timeline for the open web. Every session was fun, engaging, and thought-provoking. In the evening, I joined a group of attendees for dinner and drinks, and then headed over to Ground Kontrol for some classic arcade games before calling it a night.

Day two gave attendees some time for hands-on assistance with their personal websites. I joined David Shanske and Ryan Barrett in leading a session to help people interesting in IndieWeb-ifying their WordPress websites. The afternoon was all about personal hack time and projects before we wrapped the day up with demos. I contributed a Micropub Media endpoint implementation to Known and then started working on a new Indie-reader called "together" with Grant Richmond and a few others. To wrap up, there was an afterparty at Voicebox Karaoke sponsored by DreamHost, which was an absolute blast.

I have attended many conferences over the years, and IndieWeb Summit 2017 was one of my all time favorites. Kudos to organizers Tantek Çelik and Aaron Parecki for doing an incredible job putting the event together. Everything was top notch!

Probably the best news of all is that nearly every moment of the event was recorded and posted online, along with detailed notes of each session. I've been catching up on sessions that I missed over the last few days, and my appreciation for the event is only growing.

Can't wait for next year!

 

 

Micro.blog, JSON Feed, and Evergreen Give Me Hope for the Open Web

3 min read

I've long been a believer in the power of the open web, but my passion for saving it has been ignited by the IndieWeb movement, as of late. More and more people are discovering their distaste for creepy, ad-driven content silos like Facebook. Today's post by Dave Winer on the evils of Facebook, and John Gruber's hilariously sardonic "Fuck Facebook" reply do an excellent job of encapsulating my own frustrations. That said, there are reasons for hope.

The IndieWeb movement itself has been chipping away at the problem for years, but I've been particularly encouraged over the past few weeks by a few new developments.

First is the successful launch of Manton Reece's Micro.blog project to his Kickstarter backers. I'm a backer myself, as is my employer, and I've had the pleasure of using the platform for a few weeks now. Its early, but the project is already bearing fruit, with a rapid development pace, a vibrant community, and lots of excellent people to follow. Micro.blog is built on the notion of independence and respects your ownership of your data.

Next is the announcement and early success of the JSON Feed format created by Manton and Brent Simmons. JSON Feed is a new format designed for content syndication, similar to RSS and Atom, but based upon the JSON serialization format, which is popular with developers these days for being extremely easy to properly generate and parse. Since its announcement, there's been a flurry of activity around JSON Feed, including outcry about "yet another standard," and those who are upset that JSON Feed was created at all when there are other JSON-based syndication formats in existence. Over all of the noise, though, the adoption rate has been impressive. Many projects have been updated or created to generate and parse JSON Feed, and consumers are starting to adopt the format as well, including Feedbin, News Explorer, NewsBlur, Inoreader, and a few podcast apps. I've even jumped into the fray, creating an initial implementation of JSON Feed for the Known CMS that runs this website, and a second pass that aims to build in additional information through JSON Feed extensions. Regardless of competing standards, shortcomings in the format itself, etc., its undeniable that JSON Feed is generating real, palpable excitement for the open web, and that's undoubtedly a good thing.

Finally, in the midst of all of this, Brent Simmons has announced that he's working on a new, open source feed reader for macOS called Evergreen. Brent was the original creator of NetNewsWire, which was at one time my favorite app. In fact, I created several themes for NetNewsWire back in the day, and was a member of the beta testing and feedback group that Brent set up. Evergreen has a chance to take a fresh look at the problem of consuming feeds, and with JSON Feed and the new capabilities it could support through extensions, I am hoping that Brent takes a crack at solving the bigger picture that I blogged about in March. Imagine an open source app that bundles consumption (through feeds, including JSON Feed) with content creation and interaction (leveraging Micropub, a newly minted W3C recommendation, and Webmention). I'm looking forward to seeing what Brent produces!

So, yes, I lament the state of the web, thanks to walled gardens like Facebook, but I'm optimistic about the future.

 

 

Tim Bray on Blogging in 2017

1 min read

Replied to a post on tbray.org:

Thank you, Tim, for still blogging, and owning your own identity on the web. Your presence makes it more vibrant, unique, and diverse.

The great dan­ger is that the Web’s fu­ture is mall-like: No space re­al­ly pub­lic, no store­fronts but na­tion­al brands’, no vi­su­als com­posed by am­a­teurs, noth­ing that’s on of­fer just for its own sake, and for love.

This sentence in particular resonated with me. I want the web to be a massive, interconnected network of independant thinkers, businesses, artists, communicators, individuals, etc., not just a collection of brands shouting into the void, hoping to attract consumers.

 

 

Disqus, Self-Hosting, and Owning Your Interactions

3 min read

This morning, I read an interesting post by Don Williamson about how he removed Disqus comments from his site and moved to hosting his comments on GitHub, using some very creative hacks. Learning about the hacks he used is pretty fun, but I actually found his exploration of Disqus and its aggressive tracking more interesting. On the impact of performance on his site from using Disqus, Don pointed out:

Load-time goes from 6 seconds to 2 seconds.

There are 105 network requests vs. 16.

There are a lot of non-relevant requests going through to networks that will be tracking your movements.

He then goes into detail listing all of the ad networks and trackers that are pulled into a site when Disqus is enabled, and its terrifying:

disqus.com - Obviously!

google-analytics.com - Multiple requests; no idea who’s capturing your movements.

connect.facebook.net - If you’re logged into Facebook, they know you visit this site.

accounts.google.com - Google will also map your visits to this site with any of your Google accounts.

pippio.com - LiveRamp identify mapping for harvesting your details for commercial gain.

bluekai.com - Identity tracking for marketing campaigns.

crwdcntrl.net - Pretty suspect site listed as referenced by viruses and spyware.

exelator.com - More identity and movement tracking site which even has a virus named after it!

doubleclick.net - We all know this one: ad services and movement tracking, owned by Google.

tag.apxlv.net - Very shady and tricky to pin-point an owner as they obsfuscate their domain (I didn’t even know this was a thing!). Adds a tracking pixel to your site.

adnxs.com - More tracking garbage, albeit slightly more prolific.

adsymptotic.com - Advertising and tracking that suppposedly uses machine learning.

rlcdn.com - Obsfuscated advertising/tracking from Rapleaf.

adbrn.com - “Deliver a personalized customer journey across devices, channels and platforms with Adbrain customer ID mapping technology.”

nexac.com - Oracle’s Datalogix, their own tracking and behavioural pattern rubbish.

tapad.com - OK, I cant’t be bothered to search to look this up anymore.

liadm.com - More? Oh, ok, then…

sohern.com - Yup. Tracking.

demdex.net - Tracking. From Adobe.

bidswitch.net - I’ll give you one guess…

agkn.com - …

mathtag.com - Curious name, maybe it’s… no. It’s tracking you.

 

Including third-party JavaScript libraries on my site like choosing a sexual partner: you better know who that third party has been in bed with, or you'll be in for a nasty surprise.

Comments and comment spam are hard. But, that doesn't mean we should turn over control of our interactions to companies that choose to leverage your audience and your data for their own profit. Own your interactions!

 

 

Sharing what I watch...

1 min read

As I get deeper into the IndieWeb, I've been loving exploring more ways to share and publish my activities. Having a timeline that includes where I have been, what I've been eating and drinking, my recipes and reviews, along with photos, and social interactions helps me remember where I was and what I was doing on any given day.

Last night, I had trouble sleeping, so I decided to attack a new problem. I'm a big movie enthusiast, and enjoy collecting and watching great films. I decided that tracking what I'm watching would be a fun and useful way to enrich my activity stream.

I'd like to introduce Watching, a plugin for the Known CMS that I use for running this site. Using the plugin, I can publish a record of which movie or TV show I just watched. Earlier this evening, I watched a few minutes of Mad Max: Fury Road, which I absolutely adored, and it's been logged on my site.

Better yet? I've written experimental support for Plex webhooks, which create these records automatically on my site whenever I click or tap "play." How fun is that?

 

Adding Indieweb interactions to Nextcloud News

I spent some time this past weekend writing up a little plugin for Nextcloud News that enables Indieweb interactions using the excellent Quill. Take a look!

 

Tweetstorms vs. Publishing

2 min read

Today, I read about the launch of an app to make it easier to create "tweetstorms" on Twitter. I'll start by saying that Stormcrow seems like a well-designed, very useful app, and my commentary here isn't meant to take anything away from the developer. That said, the fact that this app needs to exist is a sad indictment of the current state of personal publishing on the web.

From a user experience perspective, tweetstorms are an absolute disaster, both from the creation perspective, and the consumption perspective. Twitter is not designed for long-form content, and tweetstorms are a dirty hack, at best. Nevermind the issue that people's carefully crafted communications are then sent off into the void of Twitter, where the conversation is difficult to follow, algorithmically curated, and controlled by a corporation.

I'm really proud to work for a company who's ultimate purpose is to help people own their digital identity, and its becoming clearer to me that its possible to also provide a better user experience for all involved in the process. I've shared some of my thoughts on user experience and the IndieWeb already, and I plan to continue to think (and write) about the problem in the future!

Also posted on IndieNews