Skip to main content

PGP: C756 2813 F881 06E2 6F1F 547B 003F 530D 3859 B702

Learn more about me. Email me at

cleverdevil

cleverdevil

cleverdevil

cleverdevil

cleverdevil

cleverdevil

micro.blog/cleverdevil

💡😈.ws

 

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.

 

 

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.

 

Publishing Markdown to Micropub Endpoints with Python

2 min read

You’re probably sick of my posts about Micropub by this point, so I’ll make this my last for a while. Maybe.

I’m up in Seattle this week on business, and the airplane ride from Los Angeles gave me a chance to play around a bit more with Micropub. I whipped up a quick script that allows for quickly publishing Markdown-formatted content to a Micropub endpoint.

This very post is published with the script! Micropub inception! Take a look:

#!/usr/bin/env python

'''
A script for quickly publishing blog posts to a Micropub endpoint. To use
this script, first ensure that you have installed:

    PyYAML
    requests
    markdown

You will also need to set the following environment variables:

    INDIEAUTH_TOKEN
    MICROPUB_ENDPOINT

Run the script, and pass it the path to a Markdown-formatted file. YAML
formatted front matter can be provided with Micropub arguments such as
`name`, `published`, and `slug`.
'''

import sys, os, yaml
import requests, markdown

# configuration
data = {}
token = os.environ.get('INDIEAUTH_TOKEN')
endpoint = os.environ.get('MICROPUB_ENDPOINT')

# make sure the user has provided adequate information
if not token or not endpoint:
    print 'INDIEAUTH_TOKEN & MICROPUB_ENDPOINT environment variables not set.'
    sys.exit(0)

if len(sys.argv) < 2:
    print 'Usage:'
    print '    blogit <path to markdown file>'
    sys.exit(0)

# read in the content
filename = sys.argv[1]
raw_content = open(filename, 'rb').read()

# check for front matter
if raw_content.startswith('---'):

    # parse out the front matter from the raw content
    _, front_matter, raw_content = raw_content.split('---', 2)

    # parse the frontmatter
    data = yaml.load(front_matter)

# render markdown
data['content'] = markdown.markdown(raw_content, extensions=[
    'markdown.extensions.codehilite',
    'markdown.extensions.extra',
    'markdown.extensions.smarty'
])

# populate remaining details
data['access_token'] = token
if 'h' not in data:
    data['h'] = 'entry'

# create the post
result = requests.post(endpoint, data=data)

# check the result
if result.status_code not in (200, 201):
    print 'Failed to publish post with status code: %d' % result.status_code
    sys.exit(1)

print 'Published successfully.'

You’ll note that it supports some Markdown extras, including code highlighting with Pygments, and several other extras.

Feedback is, of course, welcome. On my flight home, I plan on polishing the script up a bit, making it easy to install, and adding a few options.

 

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!