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.

 

New Podcast: Two Dads Talking

2 min read

I am not ashamed to admit that I love podcasts. In the early 2000s, blogs were the hot thing: an open publishing medium that allowed people to exchange ideas, converse, and share. Since then, blogs have faded, as increasingly toxic social media walled gardens have moved people off the open web. It’s a shame, really. I’m hopeful that blogs will rise again, but it’s going to take time.

Podcasts, on the other hand, have only grown in popularity, and are still blissfully free of central control from creepy ad-driven social media giants. We are in the golden age of podcasting!

I’ve had a personal microcast for a while now, and I’ve been pretty undisciplined about publishing it. Still, it has been a fun exercise, and I plan to keep at it for years to come.

Today, however, I’m excited to announce a new podcast project: Two Dads Talking. TDT is a longer form podcast featuring myself and my co-host Eddie Hinkle. Eddie and I have known each other for a few years now through the IndieWeb community, and we’ve found that we both have a lot in common, but also a significant amount of differences. This podcast is an opportunity for us to get to know each other better, and for our listeners to join us in that discovery.

Eddie and I are both parents, though at very different life stages, and both are people of faith, and technologists. I’m really looking forward to getting to know Eddie better, and I hope you’ll all join us in our journey of Two Dads Talking.

To subscribe, visit the Two Dads Talking website, follow us on Micro.blog, or subscribe in your favorite podcast client.

 

Indiepaper for macOS

1 min read

Indiepaper LogoIndieWeb Summit 2018 took place a few weeks ago in Portland, OR, and my project on day two was to create a service called Indiepaper, which is a "read it later" service for the IndieWeb. Indiepaper makes use of Mercury by Postlight Labs under the hood to extract article content and then publish it to a Micropub destination for later reading. Indiepaper is open source and is deployed on AWS Lambda using the Zappa framework. The Indiepaper website includes a tool to create a Bookmarklet for your web browser, and a Workflow for iOS that adds system-wide support for sending links to Indiepaper.

In order to make Indiepaper even easier to use, I created Indiepaper for macOS, which adds system-wide sharing support for Indiepaper to macOS. Here is a quick video demo of Indiepaper for macOS in action. Indiepaper for macOS is also open source, so feel free to poke around in the source code, and submit pull requests if you have improvements!

 

Freeing Myself from Facebook

5 min read

Ever since my discovery of the IndieWeb movement, I've wanted to free myself from Facebook (and Instagram) and their brand of surveillance capitalism. I want to own my own data, and be in control of how it is shared, and I don't want it to be used for advertising.

I've had this incarnation of a personal website for a few years, and have mostly been following the POSSE publishing model, publishing most forms of content on my website, and then automatically (or manually) syndicating that content to silos like Facebook and Twitter. But, much of my content still remains trapped inside of Facebook and Instagram.

Until now.

As of March 4, 2018, I've pulled the vast majority of my Facebook content into my website, and all of my Instagram photos into my website, paving the way for me to delete myself from Facebook (and potentially Instagram) by the end of 2018. What follows is a high-level overview of how I made the move.

Facebook

Exporting Data from Facebook

While Facebook does offer an export feature, its extremely limited, only includes very low resolution versions of your photos, and is generally very difficult to process programmatically. After some research, I discovered the excellent fb-export project on GitHub. Once installed, this tool will dump a huge amount (though, not quite all) of your Facebook data into machine-readable JSON files.

Since my website is compatible with the Micropub publishing standard, I then needed to convert this Facebook-native JSON data into microformats2 formatted JSON. Enter granary, an amazing swiss-army knife of IndieWeb by Ryan Barrett. Using granary, I whipped up a quick script that transforms the exported data into native microformats2 formatted JSON:

https://gist.github.com/cleverdevil/f33530706d6e8dacd13a8bd8e8c15dba

Publishing Liberated Data

At this point, I had a directory full of data ready to publish. Sort of. Unfortunately, not all of the data is easily translatable, or even desirable, to publish to my website. As a result, I created another script that let me, on a case by case basis, publish a piece of content, choose to skip it entirely, or save it to deal with later.

https://gist.github.com/cleverdevil/c857695bb2de1e46686d720cad9d124c

After running this script, I had a significant amount of my data copied from Facebook to my website. Huzzah!

Dealing with Photo Albums

Facebook has a "photo albums" feature, and I definitely wanted to get those memories onto my website. Again, I wrote a script that processes the exported data, and selectively allows me to upload all of the photos in an album to my website via Micropub, and then drops microformats2 JSON out that I could publish later.

https://gist.github.com/cleverdevil/d9c08ddc6eb2da0d060a5f6fe87ddf64

Once I finished processing and uploading all of the photos for the albums I wished to copy over, I ran a simple utility script I keep around to publish all of the albums as new posts to my website.

Here are some of the results:

Notice, one of these comes all the way back from 2009!

Almost There

There are still quite a few photos and other types of posts that I haven't yet been able to figure out how to migrate. Notably, Facebook has strange special albums such as "iOS Uploads," "Mobile Uploads," and "iPhoto Uploads" that represent how the photos were uploaded, not so much a group of related photos. Unfortunately, the data contained in the export produced by fb-export isn't quite adequate to deal with these yet.

Still, I am quite pleased with my progress so far. Time to move on to Instagram!

Instagram

Instagram has been slowly deteriorating as a service for years, so much so that I decided to completely stop publishing to Instagram earlier this year. It turns out, dealing with Instagram is a lot easier than Facebook when it comes to liberating your data.

Downloading My Data

After some research, I found instaLooter on GitHub, which allowed me to quickly export every single photo in its original resolution, along with nearly every bit of data I needed... except the photo captions. I ran instaLooter, and embedded the unique identifier in the filenames (which instaLooter refers to as the "code').

Getting Metadata and Publishing

I wrote a script that used granary to lookup the photo metadata and publish to my website via Micropub:

https://gist.github.com/cleverdevil/5bb767fd152de9b4c246d01086e91399

Note, I used the non-JSON form of Micropub in this case, because Known's Micropub implementation doesn't properly handle JSON for photos yet.

Conclusions

It turns out, that with a little knowhow, and a lot of persistence, you can liberate much of your data from Facebook and Instagram. I feel well on target to my goal of leaving Facebook (and maybe Instagram) entirely.

 

Micro Monday: Eddie Hinkle

1 min read

Its our first ever Micro Monday, people! Thanks to @manton and @macgenie for deciding to make this happen. I think its a great way to grow the community of Indie Bloggers and Micro.blog itself. My first recommendation for my followers is @eddiehinkle.

Eddie is a fellow IndieWeb developer that I've enjoyed getting to know over the past year or two. Eddie works on an iOS app called Indigenous:

Indigenous is an iOS app that is in development. It’s goal is to provide a native iOS interface to the indieweb movement.

Indigenous is open source, written in Apple's Swift programming language. If you're an IndieWeb-curious developer on Apple platforms, I'd encourage you to get involved with Eddie, and help him with Indigenous!

In addition to his work on the IndieWeb, I also appreciate following Eddie because he writes thoughtful posts about, you know, being a human. Its always refreshing to see someone share how their faith informs their life in an open and honest, accepting way.

Thanks for being awesome, Eddie!

 

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.

 

 

Owning My Memories

1 min read

My quest to own more of my digital identity continues, as I continue to search for ways in which I depend on social media silos like Facebook, Instagram, and Twitter. One feature of Facebook that I actually find quite delightful is On This Day, which shows you content and interactions over the years on the current day of the month. I like this feature so much, I felt like I should have it for my website, in the spirit of the IndieWeb. I'm happy to say, I've got an initial implementation in place on my site!

I've created a plugin for Known, the CMS for this site, that collects a few of my own customizations, including my On This Day implementation, and its available on my GitHub. Currently, the On This Day functionality requires a patch to Known core that isn't yet open source, but I'm hoping to polish that up and attempt to get it into Known sometime in the next few weeks.

Three cheers to owning my own memories!

 

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?

 

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

 

User Experience and the IndieWeb

6 min read

Those of you who have been following me on this site and on Twitter for the last few years know that I've been a proponent of the IndieWeb and its ideals, and would like to see a return to the open web.

Earlier today, I published a series of tweets about my desire for better, more unfied experiences for people who want to actively participate in the IndieWeb:

I received some great replies from fellow members of the IndieWeb community, including some links to interesting building blocks that people have been working on for years:

Ryan Barrett also shared his thoughts on the topic way back in 2015, with many great ideas.

Building Blocks vs. Unified Experiences

Tools like Granary, Indigenous, and InkStone are great pieces of the puzzle, as are open source CMS's like Known and WordPress with support for Micropub, Webmention, and other IndieWeb building blocks. But, the reason that silos like Facebook, Twitter, and Instagram are popular is that they provide a convenient, easy, and attractive unified experience for content consumption, content creation, and interactions. In order to be successful, and drive mass adoption, the IndieWeb must provide a user experience on par with silos on all three of these fronts.

I think that Manton Reece's Micro.blog project is another good start on attacking the problem, and may get us closer than we've ever been before, which is why I pushed my employer to back the project. But, again, its likely not enough on its own.

Between RSS and Atom, Webmention, and Micropub, the building blocks are there to create such an experience in a decentralized way, with participants in the network owning their own domains, websites, and data, pulling in content from a variety of sources via feeds, and creating posts, reactions, and interactions to their own sites with notifications to other participant sites.

My Vision for a Unified Experience

Today, most people's experience of the web is through algorithmically generated, ad-supported timelines like Twitter and Facebook. Frequently, its on mobile devices in the native app clients for these silos, rather than through a web browser. That's really a shame.

These algorithmically curated timelines are filling the gap that feed readers and aggregators like Google Reader left open. Web browsers have also ceded ground to silos, focusing purely on navigation, tab management, and search, rather than thinking about the bigger picture.

The ideal solution to this problem would be a native application for desktop operating systems and mobile platforms that places user experience at the forefront, and provides:

  • Content consumption for both the open web, through RSS/Atom, and silos like Twitter and Facebook in separate tabs or timelines.

  • Content creation for both the open web, through Micropub, and silos like Twitter and Facebook via syndication or their APIs.

  • Rich interactions for both the open web, through Webmention, and silos like Twitter and Facebook via their APIs.

Back in the early days of Twitter and the iOS App Store, John Gruber wrote about Twitter clients as pioneers of user experience. He was absolutely right! Twitter's (then) open-ish API enabled indie software companies like The Iconfactory, Atebits, and others to innovate and create incredible user experiences. In fact, the early work of The Iconfactory in Twitterific led to the hashtag, @-mention, and other patterns to take hold. The concept of "pull to refresh" was born out of this storm of innovation. Then, as it tried to figure out how to monetize its VC-backed platform, Twitter closed up its APIs, cutting off this innovation.

A unified experience for the rebirth of the open web is a massive market opportunity. The building blocks are there. History has shown that these kinds of experiences can become massively popular and drive innovation.

Opportunity for Who?

This opportunity begs the question: who will build this unified experience? Well, this time, the building blocks are truly open, so anyone can participate. All of those amazing indie developers who were creating Twitter clients back in 2007-2012 could absolutely dust off their code, and pick up where they left off.

That said, I think that browser vendors are in the best possible position to create these experiences, as this is all about driving people to the open web, and consuming it inside of web browsers. I firmly believe that innovation in web browsers has been stagnant for years, with the focus mostly being on search, navigation, rendering, and tabbed browsing, while the ultimate user experience has remained fundamentally the same.

Because of its values and origins, Mozilla is perfectly suited to the problem, and needs to reinvent itself after years of declining market share for Firefox. Mozilla has spent years on distractions like phone operating systems, and a client for enabling publishing, interaction, and content discovery and consumption on the open web, free from silos, is a great opportunity to get back to its roots.

How Can I Help?

For my part, I'm going to continue to advocate for the IndieWeb, support the members of the community that are making the future possible, and work with my employer, DreamHost, to help enable people to own their own digital identity with open platforms like WordPress.

How can you help? Well, that's a blog post for another day.

 
 

Micropub and the IndieWeb

2 min read

It's been years since I last maintained a personal website. Why? Sadly, because of the rise of social media, and content walled-gardens. A few weeks ago, I discovered Known, a new, open source CMS. Known acts as more than just a CMS, enabling users to create a single site that captures all of their content from social media and walled-gardens like Twitter, Facebook, and Instagram.

Known was born out of the IndieWeb movement, which focuses on resurrecting the web of the past, where your content is owned by you, not by an ad-driven corporation. The IndieWeb crew have developed a series of standards and specifications to encourage what they call POSSE, or Publish on your Own Site, Syndicate Elsewhere.

Surprise, It's Markdown!

This site that you are reading right now is created with Known, and fully supports IndieWeb standards like Micropub. In fact, this very post was created in Editorial for iOS and published via Micropub to this site via two workflows.

The Future is Open and Bright

I am thoroughly enjoying being able to microblog, create long form posts, share photos, and otherwise participate in the open web again, while maintaining my ownership over my own content in a single, canonical, self-managed site on my own domain.

The future of the open web is looking up!