Posts tagged 'IndieWeb'

HWC Baltimore 2017-12-12 Wrap-Up

Baltimore's December meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on December 12th.

Below are notes from the "broadcast" portion of the meetup.

martymcgui.re – Went to IndieWebCamp Austin, and it was great! Some notes on that below. IndieWebCamp Baltimore is scheduled and people are RSVPing and booking plane tickets, so he is very excited! The schedule now appears to be locked in and it's time to market it hard. Also demo'd the way he shows multiphoto posts on his site with CSS Grid (example). 2018-01-01 commitments progress: super happy with IWC Baltimore progress, expects to cut is close with his commitment to move his site to Hugo by 2018.

brksavage.com – Been working on a crash course in WordPress, HTML, kind of overloaded on it. Tonight worked on another project because of writer's block.

derekfields.is – Been geeking out on codrops – really nice visualizations and animations on the web with SVG, WebGL, and more. So pretty! Adding a blog page to his site (by hand). Researching how to incorporate Ghost into his site. Started a 100 Days of Code project! Similar to 100 Days of IndieWeb, the goal is to get an hour of coding done every day and tweet your progress. Missed a couple of days over the weekend, but enjoys sharing out his progress and the community support. Would like to have a buddy to support each other. 2018-01-01 commitment progress: working on apostrophe and a cloud service to host it, downloaded Ubuntu tools for Windows.

bouhmad.com – Site is down at the moment. Needs to get it back up and on HTTPS. Wants to do a blog post on experiences as being a dual full-time student and full-time employee out of high school, and the "full college experience". 2018-01-01 commitments: wants to get that blog post up, would like to commit to blogging at least once every two weeks in the new year capturing projects as a resource to others but also daily life as an archive for his future self.

jonathanprozzi.net – 2018-01-01 commitments: little progress on his pre-2018 commitment but still thinks he has time. Really wants to get his local WordPress + git setup going soon. A new near term goal: RSVP to IWC Baltimore!

Other Things:

  • Bitcoin! Coinbase! GDAX! How unreal the value is right now and how unusable it all is.
  • IndieWebCamp Austin! Marty went and loved it. We went looked at the Sessions Grid and talked about each one at a high level.
  • Talked about the WordPress Post Kinds plugin and how it might be useful to have a series of blog posts that explains how to get the most out of this plugin, tying that into details about the different types on the wiki and so on.
  • Talked a lot about IndieWebCamp Baltimore. It's shaping up to be very exciting! Aaron Parecki got the event and wiki pages looking good, so now we want to start getting the word out everywhere.
  • Brianna Privett talk about using WordPress as a life log.
  • Ways to put WordPress development into git, like Bedrock/Trellis, putting the whole site in version control, organizing child themes, etc.
  • CSS Grid! It seems like magic!
  • 2017 was an amazing year for HWC Baltimore. Thanks to everyone who made it a success. We can't wait to see everyone again and made an awesome 2018!
HWC Baltimore Participants
Left-to-right: derekfields.is, brksavage.com, jonathanprozzi.net, bouhmad.com, martymcgui.re

Thanks to everybody who came out! Due to the upcoming holiday around the next usual meeting, this will be our last meeting of 2017. We look forward to seeing you at the Digital Harbor Foundation Tech Center for the first meeting of 2018! We'll be meeting again on Tuesday, January 9th !

This Week in the IndieWeb Audio Edition • November December 2nd - 8th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for December 2nd - 8th, 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

IndieWeb wiki Workflow for Alfred

As someone who spends a lot of time in the IndieWeb community, I spend a lot of time opening up various pages that I know are there. At times it feels tedious to open a new tab and type out the full URL.

I'm not alone in this! Folks that hang out in the IndieWeb chat, often use the "what is x?" wiki lookup feature of our friendly IRC bot Loqi.

I'm a big fan of Alfred, the launcher and general magic quick bar for macOS, I thought I could save myself some time by making a Workflow to open those pages for me.

The Workflow itself does only one thing: When you open Alfred (⌘-spacebar), type "iw KEYWORD" and press Enter, it opens https://indieweb.org/KEYWORD in your browser.

You can grab a copy of the workflow here: indieweb.org-wiki-workflow.alfredworkflow

RSVP'd to an event https://2018.indieweb.org/baltimore

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMaryland

I'm going!

Beyond excited to be co-organizing the first-ever IndieWebCamp Baltimore!

Join us January 20th-21st at the Digital Harbor Foundation Tech Center for a day of learning and discussions about the IndieWeb, followed by a day of working on projects for your own site!

Homebrew Website Club Baltimore

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

NOTE: We are meeting on Tuesday for this week instead of the usual Wednesday. Be sure to double-check your calendars!

Join us for an evening of quiet writing, IndieWeb demos, and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-12-12-homebrew-website-club

Facebook Event: https://www.facebook.com/events/157762118071065/

This Week in the IndieWeb Audio Edition • November 25th - December 2nd, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for November 26th - December 2nd, 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Replied to https://indieweb.org/2018-01-01-commitments

It’s time to make IndieWeb commitments for 2018!

I commit to hosting an IndieWebCamp in Baltimore in 2018. I hope to knock this out pretty early in the year, actually! My co-host Jonathan Prozzi and I will be choosing a date in the next week or so, based on the feedback we have received so far.

I also want to work on a new design for my site and to contribute more Micropub-based tools for other folks to use on their IndieWeb sites. To that end, by 2018-01-01 I hope to finish reworking much of my site’s automation and deployment to replace my current Jekyll configuration, which relies heavily on custom plugins that run on every compile and takes about a minute to rebuild the site. I aim to replace the core static site generation with Hugo, and to replace custom plugin logic with tiny services that run only when posts are created or updated, along the lines of morris, a simple receiver that stores webmentions from webmention.io in data files that static site generators like Hugo (and Jekyll) can consume.

For comparison, I looked up my (vague) commitment for last year which I easily met but was so vague about that I never posted it. I think I was cleaning up my Jekyll configuration to pre-compute metadata about images and other files in my posts. I would end up scrapping that in January when I switched to a micropub media endpoint for hosting my uploads.

This Week in the IndieWeb Audio Edition • November 18th - 24th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for November 18th - 24th, 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

This Week in the IndieWeb Audio Edition • November 11th - 17th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for November 11th - 17th, 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

HWC Baltimore 2017-11-15 Wrap-Up

Baltimore's second November 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on November 15th.

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net – Is back after lots of travel and writing a post about that, including a roadmap of getting back into things. Archived several posts from his old Hugo site into his new WordPress site. One of his 2018-01-01 goals is to practice posting status updates to his site instead of Facebook.

brksavage.com – Bought a new domain for a blog a couple of months ago, transferring it to BlueHost now. Been looking over old content. A 2018-01-01 commitment: small goal - write something small and publish it before end of year.

derekfields.is – Working on getting a JavaScript-based CMS called apostrophe.js working for his site. Probably going to host it on Heroku. Also learning the Windows subsystem for Linux, because developing on Windows "doesn't feel right" since he's not using .NET or similar.

bouhmad.com – Working on a first post to go up tonight! Realized the original scope for his "first post", which was going to compare multiple host-based intrusion detection systems, was going to take weeks! So, he's starting off with one, then planning to get back to it after he graduates (hopefully!) in December.

martymcgui.re – Been working on a new way to store and display webmentions on his site. Currently has one site that pulls them from webmention.io with JavaScript, and one site that polls webmention.io for new mentions every time it is compiled by Jekyll. Started building a webhook in Python but has now moved to PHP because it should be simpler. 

dariusmccoy.com – Just got started with his domain, just a landing page. Wants to add more content to it.

Other things:

  • IndieWeb 2018-01-01 Commitments.
  • echo-chamber.js - a fake commenting system that stores comments in the browser, so the commenter (and no one else) can see what they are saying.
  • IndieWebCamp Baltimore 2018! We talked about what an IndieWebCamp is and how it is structured.
  • IoT and the IndieWeb (mentioned the IndieWebSummit session on IndieWeb for Hardware).
  • Twitter and Facebook business models and how they benefit from outrage.
  • IndieWeb generations, specifically the way that participating in the IndieWeb right now almost requires you to be a developer.
  • The creepiness of Amazon Key.
Left-to-right: martymcgui.re, bouhmad.com, dariusmccoy.com, jonathanprozzi.net, brksavage.com, derekfields.is

Thanks to everybody who came out! We look forward to seeing you at the Digital Harbor Foundation Tech Center for the next one! We'll be meeting again on November 29th.

Homebrew Website Club Baltimore

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, IndieWeb demos, and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-11-15-homebrew-website-club

This Week in the IndieWeb Audio Edition • November 4th - 10th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for November 5th - 11th, 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

This Week in the IndieWeb Audio Edition • October 28th - November 3rd, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for October 28th - November 3rd, 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

HWC Baltimore 2017-11-01 Wrap-Up

Baltimore's first November 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on November 1st. 

Below are notes from the "broadcast" portion of the meetup.

bouhmad.com – Been working on a big post about security issues. Also, collecting resources for an Equifax-breach-themed CryptoParty in November, which will also go on his site.

djfalcon23.github.io – Buying his dream domain (TBA once it is registered). Been reading lots about getting into tech industry, dealing w/ impostor syndrome. Planning to turn some of these into notes and/or posts on his site when it is up.

martymcgui.re – Posted up the last IWC NYC 2017 interview (with Tantek). Would like to have one per week to put up, so will bring his mic to next HWC Baltimore, and may start asking people in IRC to do interviews over Skype, Zencaster, or similar. Also just reached the 100th episode of his comedy podcast.

Other things.

  • Worries about Net Neutrality and the upcoming FCC proposals to break it by allowing pay-for-access fees to publishers. We looked at resources like battleforthenet.com and a video from Congressional Democrats about the issue.
  • Podcasts about tech. Derek has been trying to find podcasts about cutting-edge tech, but been frustrated. For example, Friends Talk Frontend has good content, but he finds the hosts annoying. Adam recommend Talk Python to Me because it is funny and timely, focusing on new tech. Marty recommends the Contrafubilists because it is kind of an anti-cutting-edge tech podcast with very thoughtful hosts that take apart the marketing speak behind technology trends.
  • Also got off into the weeds about good story-driven podcasts. 😅
  • Talked about a theoretical "disruptive student" detection system that uses computer vision, motion detection, face recognition, to log "overactive" students and generate reports. Generated a lot of interesting discussion about unintended consequences of technologically "simple" systems.
  • Talked about the problems of trying to digitize the rules of complex human systems and the problems of measuring outcomes, determining what "just" algorithms looks like, etc.
Left-to-right: djfalcon23, bouhmad.com, martymcgui.re

Thanks to everybody who came out! We look forward to seeing you at the Digital Harbor Foundation Tech Center for the next one! We'll be meeting again on November 15th and November 29th.

This Week in the IndieWeb Audio Edition • October 21st - 27th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for October 21st - 27th, 2017.

This week features a brief interview with Tantek Çelik recorded at IndieWebCamp NYC 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Here’s a brief interview with Oliver Baptiste from the most recent This Week in the IndieWeb Podcast.

🎧 Full Episode: https://martymcgui.re/2017/10/22/094640/

Homebrew Website Club Baltimore November 1st, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, IndieWeb demos, and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-11-01-homebrew-website-club

This Week in the IndieWeb Audio Edition • October 14th - 20th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for October 14th - 20th, 2017.

This week features a brief interview with Oliver Baptiste recorded at IndieWebCamp NYC 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

HWC Baltimore 2017-10-18 Wrap-Up

Baltimore's second October 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on October 4th.

Below are notes from the "broadcast" portion of the meetup.

martymcgui.re — Recently posted about his IWC NYC hack day project - showing subtitle and caption tracks for audio files in the browser by marking them up as a video element. Showed off his new personal site, a note-taking and planning site with an audience of one. It lives on his laptop and on a protected Tor hidden service so it can be read from his phone. Also been working on porting his podcast website to Hugo, learning how fragile his micropub server is about mapping URLs to flat files on the server.

bouhmad.com — Started a new job recently, so been working to find time to work on his new site. Wrote an outline and a list of resources about what the site will be about and what content will be on it. Hoping to publish in the next two weeks!

maryreisenwitz.com — Our venue host for the evening! Been writing a lot of stuff and working to organize it. Outlining story points for a narrative piece, consists of lots of dream pieces, which she has been logging for a few years. Been organizing those in Google Keep, cataloging and tagging them by time. Found it really interesting to look over her dream notes for this time past year. Also finding searching incredibly useful. "When did I dream about a horse? There are two dreams!"

rhearamakrishnan.com — Has a set of projects she wants to finish before updating her website. One of them is a podcast that will require lots of collaborative elements, so been planning that.

angelosresu.me — Has been on the job search and realized he needed a website. It's currently a programming demo of a CAD app that uses Paper.js and supports boolean operations over primitives.

Other things:

  • We talked about aligning audio/video content and content in a web page, like this course on O'Reilly. Would be useful for DHF's learning system courses. Could also be fun to have This Week in the IndieWeb Audio Edition show previews of the pages being discussed as they are being discussed.
  • We discussed capturing notes with the lowest friction tools then moving them into more useful/durable systems later.
  • We talked about podcasting tools. Dedicated recorders for in-the-field recording, Audacity for editing.
  • We talked about the recent announcement from Adafruit's founder/owner/engineer ladyada finding herself locked out of her Facebook account with no apparently recourse. This led to general discussion of silos and monopolies, systems that are secretly bad for you because they stalk you or share you or your contacts' data, systems that are directly bad for you like Candy Crush and other addictive apps.
  • Talked about some decentralized systems, like MaidSafe (decentralized p2p filestore, incentivized w/ a cryptocurrency), and Beaker's new decentralized Twitter-alike Rotonde (decentralized p2p websites, host it yourself or pay someone to mirror).

Left-to-right: martymcgui.re, bouhmad.com, maryreisenwitz.com, rhearamakrishnan.com, angelosresu.me

Thanks to everybody who came out! We look forward to seeing you at the Digital Harbor Foundation Tech Center for the next one! Look for the announcement soon!

Native HTML5 captions and titles for audio content with WebVTT

This is a write-up of my Sunday hack day project from IndieWebCamp NYC 2017!
You can see my portion of the IWC NYC demos here.

Prelude: Videos for audio content

Feel free to skip this intro if you are just here for the HTML how-to!

I've been doing a short ~10 minute podcast about the IndieWeb community since February, an audio edition of the This Week in the IndieWeb weekly newsletter cleverly titled This Week in the IndieWeb Audio Edition.

After the 2017 IndieWeb Summit, each episode of the podcast also featured a brief ~1 minute interview with one of the participants there. As a way of highlighting these interviews outside the podcast itself, I became interested in the idea of "audiograms" – videos that are primarily audio content for sharing on platforms like Twitter and Facebook. I wrote up my first steps into audiograms using WNYC's audiogram generator.

While these audiograms were able to show visually interesting dynamic elements like waveforms or graphic equalizer data, I thought it would be more interesting to include subtitles from the interviews in the videos. I learned that Facebook supports captions in a common format called SRT. However, Twitter's video offerings have no support for captions.

Thankfully, I discovered the BBC's open source fork of audiogram, which supports subtitles and captioning, including the ability to "bake in" subtitles by encoding the words directly into the video frames. It also relies heavily on BBC web infrastructure, and required quite a bit of hacking up to work with what I had available.

The BBC Audiogram captioning interface.

In the end, my process looked like this:

  • Export the audio of the ~1 minute interview to an mp3.
  • Type up a text transcript of the audio. Using VLC's playback controls and turning the speed down to 0.33 made this pretty easy.
  • Use a "forced alignment" tool called gentle to create a big JSON data file containing all the utterances and their timestamps.
  • Use the jq command line tool to munge that JSON data into a format that my hacked-up version of the BBC audiogram generator can understand.
  • Use the BBC audiogram generator to edit the timings and word groupings for the subtitles and generate the final video.
  • Bonus: the BBC audiogram generator can output subtitles in SRT format - but if I've already "baked them in" this feels redundant.

You can see an early example here. I liked these posts and found them easy to post to my site as well as Facebook, Twitter, Mastodon, etc. Over time I evolved them a bit to include more info about the interviewee. Here's a later example.

One thing that has stuck with me is the idea that Facebook could be displaying these subtitles, if only I was exporting them in the SRT format. Additionally, I had done some research into subtitles for HTML5 video with WebVTT and the <track> element and wondered if it could work for audio content with some "tricks".

TL;DR - Browsers will show captions for audio if you pretend it is a video

Let's skip to the end and see what we're talking about. I wanted to make a version of my podcast where the entire ~10 minutes could be listened to along with timed subtitles, without creating a 10-minute long video. And I did!

Here is a sample from my example post of an audio track inside an HTML5 <video> element with a subtitle track. You will probably have to click the "CC" button to enable the captioning

How does it work? Well, browsers aren't actually too picky about the data types of the <source> elements inside. You can absolutely give them an audio source.

Add in a poster attribute to the <video> element, and you can give the appearance of a "real" video.

And finally, add in the <source> element with your subtitle track and you are good to go.

The relevant source for my example post looks something like this:

<video controls poster="poster.png" crossorigin="anonymous" style="width: 100%" src="audio.mp3">
  <source class="u-audio" type="audio/mpeg" src="audio.mp3">
  <track label="English" kind="subtitles" srclang="en" src="https://media.martymcgui.re/.../subtitles.vtt">
</video>

So, basically:

  • Use a <video> element
  • Give it a poster attribute for a nice background
  • Use an audio file for the <source> inside
  • Use the <track> element for your captions/subtitles/etc.

But is that the whole story? Sadly, no.

Creating Subtitles/Captions in WebVTT Format

In some ways, This Week in the IndieWeb Audio Edition is perfectly suited for automated captioning. In order to keep it short, I spend a good amount of time summarizing the newsletter into a concise script, which I read almost verbatim. I typically end up including the transcript when I post the podcast, hidden inside a <details> element.

This script can be fed into gentle, along with the audio, to find all the alignments - but then I have a bunch of JSON data that is not particularly useful to the browser or even Facebook's player.

Thankfully, as I mentioned above, the BBC audiogram generator can output a Facebook-flavored SRT file, and that is pretty close.

After reading into the pretty expressive WebVTT spec, playing with an SRT to WebVTT converter tool, and finding an in-browser WebVTT validator, I found a pretty quick way of converting those in my favorite text editor which basically boils down to changing something like this:

00:00:02,24 --> 00:00:04,77
While at the 2017 IndieWeb Summit,

00:00:04,84 --> 00:00:07,07
I sat down with some of the
participants to ask:

Into this:

WEBVTT

00:00:02.240 --> 00:00:04.770
While at the 2017 IndieWeb Summit,

00:00:04.840 --> 00:00:07.070
I sat down with some of the
  participants to ask:

Yep. When stripped down to the minimum, the only real differences in these formats is the time format. Decimals delimit subsecond time offsets (instead of commas), and three digits of precision instead of two. Ha!

The Future

If you've been following the podcast, you may have noticed that I have not started doing this for every episode.

The primary reason is that the BBC audiogram tool becomes verrrrry sluggish when working with a 10-minute long transcript. Editing the timings for my test post took the better part of an hour before I had an SRT file I was happy with. I think I could streamline the process by editing the existing text transcript into "caption-sized" chunks, and write a bit of code that will use the pre-chunked text file and the word-timings from gentle to directly create SRT and WebVTT files.

Additionally, I'd like to make these tools more widely available to other folks. My current workflow to get gentle's output into the BBC audiogram tool is an ugly hack, but I believe I could make it as "easy" as making sure that gentle is running in the background when you run the audiogram generator.

Beyond the technical aspects, I am excited about this as a way to add extra visual interest to, and potentially increase listener comprehension for, these short audio posts. There are folks doing lots of interesting things with audio, such as the folks at Gretta, who are doing "live transcripts" with a sort of dual navigation mode where you can click on a paragraph to jump the audio around and click on the audio timeline and the transcript highlights the right spot. Here's an example of what I mean.

I don't know what I'll end up doing with this next, but I'm interested in feedback! Let me know what you think!

🔖 Bookmarked http://vihart.com/social-media-systems-and-democracy/
Social Media Systems and Democracy | Vi Hart

“In practice, inspiring and satisfying pieces of content are dead ends for user actions. Thoughtful pieces of content that take twenty minutes to read get one vote in the time it takes for pretty pictures and amusing memes to get dozens.”

“In practice, inspiring and satisfying pieces of content are dead ends for user actions. Thoughtful pieces of content that take twenty minutes to read get one vote in the time it takes for pretty pictures and amusing memes to get dozens.”

This Week in the IndieWeb Audio Edition • October 7th - 13th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for October 7th - 13th, 2017.

This week features a brief interview with David Shanske recorded at IndieWebCamp NYC 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

This Week in the IndieWeb Audio Edition • September 30th - October 6th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for September 30th - October 6th, 2017.

This week features a brief interview with Emma Hodge recorded at IndieWebCamp NYC 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

HWC Baltimore 2017-10-04 Wrap-Up

Baltimore's first October 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on October 4th.

Below are notes from the "broadcast" portion of the meetup.

martymcgui.re — Went to IndieWebCamp NYC last weekend! Had a really great time (that he really needs to write up). Figured out how to show closed captions / subtitles on audio content (and needs to write that up). Recently decided that Jekyll was slowing him down too much and decided to jump to Hugo. First steps there - use a sacrificial website to learn on that is much simpler, in this case the We Have to Ask Podcast. Also showed off Rob Weychert's website as one that impressed him from IWC NYC due to the really nice typography, spacing, layout.

djfalcon23.github.io — Added a new slideshow feature. Can now show a model slideshow of past projects. In true HWC fashion, he pushed this feature live during the demo. Will be adding similar modal displays for PDF documents and videos.

lizboren.art — Been changing her art portfolio site. It's hosted on ArtStation which has a pretty affordable "pro" level with good editing tools. She's been happy with it for now. Slightly more problematic is that her .art domain was registered on her behalf by her school and now she doesn't know how to get access to manage it. We tried to use the WHOIS info to track down who to contact at the controlling registrar.

jonathanprozzi.net — Been working on a site for work at Digital Harbor Foundation. They are relaunching blueprint.digitalharbor.org educator resource portal. They've been working on a clear structured landing page for people that are not registered for it, as well as cleaning up navigation for users who are registered. It's a WordPress site and they've been moving their content into "Sensei", a WordPress add-on for education content from WooCommerce.

Other things:

  • We talked about doing design research and taking inspiration from sites that are similar to what you're working on.
  • Talked about the different approaches needed when working on content and structure versus working on making something attractive.
  • Went around talking about pet peeves about the web: bad graphic design, not having an obvious login button, sites that use social logins (e.g. GitHub or Twitter) when they don't work, crucial interactions in modals that aren't clickable on mobile, surveillance and adware crap.
  • Talked about the recent "alternative to ads" where the page runs a JavaScript bitcoin miner, and how wasteful this is in terms of energy vs. coins earned. Maybe all machines need mining ASICs? Talked about other alternatives like Brave and Flattr, compulsory licensing models and Doctorow's Eastern Standard Tribe, paywalls, paying for things with Bitcoin in general, money as an abstract concept.

Left-to-right:lizboren.art, martymcgui.re, jonathanprozzi.net, djfalcon23.github.io

Thanks to everybody who came out! We look forward to seeing you on October 18th at the Digital Harbor Foundation Tech Center!

📍 Checked in at Juice Press at Gansevoort, New York, NY.
with Tantek
Grabbing some food post #IndieWeb Camp NYC. — with Tantek
📍 Checked in at Dalberg - Global Development Advisors, New York, NY.
Getting set up for #IndieWeb Camp NYC!

This Week in the IndieWeb Audio Edition • September 23rd - 29th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for September 23rd - 29th, 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Homebrew Website Club Baltimore October 18th, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, IndieWeb demos, and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-10-18-homebrew-website-club

Facebook events: https://www.facebook.com/events/174931906396754/

Homebrew Website Club Baltimore October 4th, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, IndieWeb demos, and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-10-04-homebrew-website-club

Facebook Event: https://www.facebook.com/events/1726627160978658/

Hey Folks in/near NYC! @IndieWebCamp NYC is just 5 days away, 9/30 - 10/1

Last year’s IWC NYC was my first in-person IndieWeb experience, and I was completely caught up by the thoughtful people working first-hand to build a more personal, more social web; a web where your content, identity, and interactions are yours, instead of food for surveillance-powered ad-engines like Facebook.

Since then, I’ve started a Homebrew Website Club in Baltimore, a weekly IndieWeb Podcast, made tons of improvements to my site, and even created some IndieWeb tools, like a micropub media endpoint for storing photos, video, audio, and more, a tool for posting events to your own site, and a tool for posting audio, such as podcasts.

So come on out for two days of participatory discussions, user experience design, and face-to-face help improving our personal websites and the future of the IndieWeb!

I’ll be recording interviews for the This Week in the IndieWeb Podcast, if you’re interested in sharing your IndieWeb journey and thoughts.

There will also be some amazing people to meet, like IndieWeb co-founder Tantek Çelik, IndieWeb WordPress developer David Shanske, awesome designer Hannah Donovan, and many more!

Registration is super-affordable! Free if you have your own personal site! https://2017.indieweb.org/nyc.

Hope to see you there!

This Week in the IndieWeb Audio Edition • September 16th - 22nd, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for September 16th - 22nd, 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

HWC Baltimore 2017-09-20 Wrap-Up

Baltimore's second September 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on September 20th. It was our one-year anniversary, given that our first meeting occurred on September 21st, 2016.

We celebrated with cookies!

Insomnia cookies and IndieWebCamp stickers

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net – Set up bridgy on his new WordPress site since last time. Working on a post detailing his move from Hugo to WordPress. Hoping it serves as documentation to help with outreach to other folks who already use WordPress, or folks looking to start a new personal website. Also hoping the bridgy publish works, since this is his first time posting with it.

maryreisenwitz.com – Working on web content for a DHF digital fabrication course that starts next week, starting with Autodesk Fusion 360. It's organized as "lessons" on a WordPress site at learn.digitalharbor.org.

bouhmad.com – Prepping to launch his personal site at that URL. Has a local development version, written in Hugo. Will be posting about security research.

rhearamakrishnan.com – Working on her portfolio website, which mostly links to writing she has had published elsewhere. Wants to make sure all the outgoing links still work, update the look. Also has a lot of visual content like zines that she wants to display in an appealing way. Currently publishes via GitHub Pages, facing a learning curve making styling changes, but is sticking with it and wants to keep things simple.

martymcgui.re – Super excited that we have had a year of HWC Baltimore meetups! Looking forward to more outreach in the year ahead, finding ways to reach people who don't yet know that they want to be part of the IndieWeb. On his personal site, been working on a per-month archive view. Playing both with Jekyll plugins to generate the pages and with learning CSS Grid to do the layout, because it's new and shiny. The slowness of Jekyll is really tempting him to jump to Hugo, despite knowing it will be a huge pain.

Shawn Grimes – Working on web content for a different DHF learning system called Blueprint. Currently focused on things like that rather than his personal website.

Other things:

  • We talked about some of the pros/cons of static site generators vs WordPress. E.g. security needs, ease of posting, etc. etc. etc...
  • We talked about Hugo being good for archiving content like old Evernote notes. You can make an archive that is more browsable/searchable than the Evernote exports and doesn't require Evernote.
  • Talked about ways of taking and organizing notes, differing needs (e.g. need to write down something quickly, so a mobile interface is key). Some different options came up, like laverna.cculyssesapp.com.
  • Talked about reasons not to store things on clouds like Evernote and Dropbox, targeted advertising. Tools to prevent surveillance such as Better and Firefox Focus.
  • Talked about some general intro-to-IndieWeb stuff, how it got started, building blocks like POSSE and webmentions, and making progress through small incremental steps.
Back row: Shawn, Jonathan, Adam, Rhea, Mary. Front: Marty

We're very happy to have reached the milestone of a year of (nearly-) regular meetings! Thanks to everyone who has come out to be a part of these meetups so far.

We hope you'll join us again on for another HWC Baltimore meetup at Digital Harbor Foundation Tech Center! Our next meetups will be October 4th followed by another on October 18th.

Here’s a brief interview with Josh Juran from the most recent This Week in the IndieWeb Podcast.

🎧 Full Episode:

https://martymcgui.re/2017/09/15/224858/

post from
This Week in the IndieWeb Audio Edition • September 9th - 15th, 2017
Show/Hide Transcript Audio edition for This Week in the IndieWeb for September 9th - 15th, 2017. This week features a brief interview with Josh Juran recorded at IndieWeb Summit 2017. You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/. Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 -...

This Week in the IndieWeb Audio Edition • September 9th - 15th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for September 9th - 15th, 2017.

This week features a brief interview with Josh Juran recorded at IndieWeb Summit 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Here’s an interview with Ryan Barrett from the most recent This Week in the IndieWeb Podcast.

🎧 Full Episode:

https://martymcgui.re/2017/09/09/133301/

post from
This Week in the IndieWeb Audio Edition • September 2nd - 8th, 2017
Show/Hide Transcript Audio edition for This Week in the IndieWeb for September 2nd - 8th, 2017. This week features a brief interview with Ryan Barrett recorded at IndieWeb Summit 2017. You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/. Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 -...

This Week in the IndieWeb Audio Edition • September 2nd - 8th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for September 2nd - 8th, 2017.

This week features a brief interview with Ryan Barrett recorded at IndieWeb Summit 2017.

You can find all of my audio editions and subscribe with your favorite podcast app here: martymcgui.re/podcasts/indieweb/.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

HWC Baltimore 2017-09-06 Wrap-Up

Baltimore's first September 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on September 6th.

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net (Jonathan) – Stepped through Digital Ocean tutorials with nginx and has a fresh new WordPress site running for his personal site. Has a SemPress theme and the IndieWeb plugin and will be working through all those next. Happy to already have working rel-me stuff and being able to log into the IndieWeb wiki. Looking forward to helping others get set up as well.

djfalcon23 (Derek) – Thinking about getting a ".is" domain. Likes the idea of using it with paths like ".is/cool", ".is/making". Started a new site for his light-up bicycling backpack, using his personal portfolio site as a template.

martymcgui.re (Marty) – Started a dedicated podcast-oriented page for This Week in the IndieWeb Audio Edition. Did some refactoring of his site to make it work reasonably. Next up is adding subscribe buttons for Apple Podcasts, Stitcher, and more. Did some research into other podcasts' website subscribe button designs.

Other things:

  • We also talked about Digital Ocean has a hosting provider. We like that they provide a lot of guides, in addition to being very affordable.
  • Talked about geo-based TLDs as being more stable than ".ninja" and others. Reviewed some podcast subscribe button designs on a few sites.
  • Talked about recent video games and 8-bit aesthetics.
jonathanprozzi.net, djfalcon23, martymcgui.re

We hope that you'll join us for another HWC Baltimore, which will next meet on September 20th at the Digital Harbor Foundation Tech Center!  

This Week in the IndieWeb Audio Edition • Update for 2017-09-06

Here’s a brief addendum to the most recent newsletter.

Homebrew Website Club Austin will be meeting today at 6:30PM US Central Time.

Homebrew Website Club Berlin will be restarting tomorrow, September 7, at 6:30PM GMT+2.

Find more at indieweb.org/Events.

The next newsletter may be a bit late due to my travel schedule.

Music for this episode was Day 62 - Pipes from Aaron Parecki’s 100 Days of Music Project.

Here’s an interview with @rabble from the most recent This Week in the IndieWeb Podcast.

🎧 Full episode:

https://martymcgui.re/2017/09/02/112010/

post from
This Week in the IndieWeb Audio Edition • August 26th - September 1st, 2017
Show/Hide Transcript Audio edition for This Week in the IndieWeb for August 26th - September 1st, 2017. This week features a brief interview with @rabble recorded at IndieWeb Summit 2017. You can find all of my audio editions here. You can subscribe with your favorite podcast app on huffduffer. Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day...

This Week in the IndieWeb Audio Edition • August 26th - September 1st, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for August 26th - September 1st, 2017.

This week features a brief interview with @rabble recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

RSVP'd to an event https://2017.indieweb.org/nyc

Dalberg Global Development Advisors NYC 99 Madison Avenue, Floor 17, New YorkNY

I'm going!

Looking forward to another great IndieWeb event in NYC!

This Week in the IndieWeb Audio Edition • August 19th - 25th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for August 19th - 25th, 2017.

This week features a brief interview with Tom Brown recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Homebrew Website Club Baltimore September 20, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, IndieWeb demos, and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-09-20-homebrew-website-club

Facebook event: https://www.facebook.com/events/129602354328830/

Homebrew Website Club Baltimore September 6, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, IndieWeb demos, and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-09-06-homebrew-website-club

Facebook event: https://www.facebook.com/events/1748593935440549/

HWC Baltimore 2017-08-23 Wrap-Up

Baltimore's second August 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on August 23rd.

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net (Jonathan) – Had been working on a wedding site with Hugo and making progress. Got really frustrated with adding image galleries, which required a lot of extra tools. Realized that he could accomplish the same thing in WordPress really quickly. So, spent quiet writing hour starting over in WordPress. At this point, just wants to have it done, rather than spending time learning something new along the way.

martymcgui.re (Marty) – Since last time has been thinking a lot more about delivering transcriptions with audio content. Did more experimenting with Audiogram, and found the BBC's fork, which supports subtitles and transcription editing, but also depends on a lot of private BBC infrastructure out of the box. Is now able to get timestamped transcripts by combining an audio file and long-form text transcription using a tool called gentle. Then by feeding that into a hacked-up copy of the BBC's Audiogram can generate video with hardcoded subtitles. Here's an example from the most recent This Week in the IndieWeb. Pretty neat! Also experimenting with providing a text transcript of the audio newsletter along w/ the audio via a simple HTML details/summary elements with an iframe. Example here.

Other things:

  • We talked about use cases where static sites are great (simple project sites) and not-so-great (lots of media files).
  • We also chatted a lot about the future of the This Week in the IndieWeb audio edition, making the content more accessible, making it more engaging.
  • We also talked about being aware of when it makes sense to use manual tools vs. trying to creating automation, such as the tradeoffs with using "manual" video editing tools vs. tools like Audiogram.
Group Photo
Left-to-right: martymcgui.re, jonathanprozzi.net

We hope that you'll join us for another HWC Baltimore, which will next meet on September 6th and again on September 20th at the Digital Harbor Foundation Tech Center! 

Here’s an interview with Jean MacDonald from the most recent This Week in the IndieWeb.

🎧 Full Episode:

https://martymcgui.re/2017/08/19/140447/

post from
This Week in the IndieWeb Audio Edition • August 12th - 18th, 2017
Audio edition for This Week in the IndieWeb for August 12th - 18th, 2017. This week features a brief interview with Jean MacDonald recorded at IndieWeb Summit 2017. You can find all of my audio editions here. You can subscribe with your favorite podcast app on huffduffer. Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 -...

This Week in the IndieWeb Audio Edition • August 12th - 18th, 2017

Show/Hide Transcript

Audio edition for This Week in the IndieWeb for August 12th - 18th, 2017.

This week features a brief interview with Jean MacDonald recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

I (finally) watched the video of this session from IndieWeb Summit 2017:

https://youtu.be/C0Cv10b83RE

One of the most powerful ideas discussed is the “algorithm that works for you”, to avoid information overwhelm.

Time to nudge the folks that started working on Together after the session!

https://cleverdevil.io/2017/richard-its-early-but-at-last-weekends-indieweb-summit-in

post from
Richard, it's early, but at last weekend's IndieWeb Summit in Portland, a small group of us started tinkering on what we hope could be the Timeline of the Open Web. At this point, it's wireframing and prototyping, but check it out! We call it "together" and you can find more information on it on the IndieWeb wiki - https://indieweb.org/together - and on GitHub - https://github.com/cleverdevil/together/ I believe that the what users will want isn't a traditional feed reader, but somethi...
Richard, it's early, but at last weekend's IndieWeb Summit in Portland, a small group of us started tinkering on what we hope could be the Timeline of the Open Web. At this point, it's wireframing and prototyping, but check it out! We call it "together" and you can find more information on it on the IndieWeb wiki - https://indieweb.org/together -...

This Week in the IndieWeb Audio Edition • August 5th - 11th, 2017

Audio edition for This Week in the IndieWeb for August 5th - 11th, 2017.

This week features a brief interview with Anton Podviaznikov recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Syndicating Audio Posts with WNYC's Audiogram Generator

I publish a few different podcasts and often find myself advertising new episodes by syndicating new posts to various social media silos.

Sadly, few social media services consider audio to be "a thing", despite often having robust support for video.

I'm certainly not the first person to notice this, and the fine folks at WNYC have taken this audio sharing problem head-on.

Enter the Audiogram Generator, an open source project that runs on NodeJS and uses FFMPEG to take samples from your audio files and munge them into short videos for sharing on social networks.

Here's a quick rundown of how I got the Audiogram Generator running on my macOS laptop using Docker.

I use Homebrew, so first I installed docker and docker-machine and created a new default machine:

  brew install docker docker-machine
  docker-machine create -d virtualbox default

Once that finished, I set my environment variables so the docker command line utility can talk to this machine:

eval $(docker-machine env)

Next, it was time to download the source for the audiogram generator from GitHub and build the Docker container for it:

  git clone https://github.com/nypublicradio/audiogram.git
  cd audiogram
  docker build -t audiogram .

Finally, I could run it:

  docker run -p 8888:8888 -t -i audiogram
  npm start

Once up, I pointed my browser at http://192.168.99.100:8888/ and I saw pretty much the interface that you see in the screenshot above.

The basic usage steps are:

  • Choose an audio file
  • Choose a template
    • Templates w/ images are hardcoded into the app, so if you want to use them with your own images you'll have to make changes to the source.
  • Choose a selection of the audio that is less than 300 seconds long
  • Add any text if the template requires it
  • Generate!
  • Download
  • Upload to silos!

I made a sample post to my own site using a selection of an interview and then syndicated that post by uploading the same video to MastodonTwitter, and Facebook.

I don't yet know exactly how I'll choose what portions to share on each silo, what text and links to accompany them to encourage folks to listen to the full episodes, and so on. There are also some quirks to learn. For example, Twitter has a maximum length of 2:20 for videos, and its cropping tool would glitch out and reset to defaults unless I stopped it "near" the end.

Thankfully, there is a very detailed Audiogram Generator usage doc with lots of examples and guidelines for making attention-getting posts.

For the near term I want to play with the tool to see what kinds of results I can make. Long-term I think this would be a really neat addition to my Screech tool, which is designed for posting audio to your own website.

How do you feel about audiograms? I'd love to hear other folks' thoughts!

HWC Baltimore 2017-08-09 Wrap-Up

Baltimore's first August 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on August 9th.

Below are notes from the "broadcast" portion of the meetup.

djfalcon23 (Derek) – been on break of web dev to learn Android dev. Set up a schedule to work on his portfolio site on Wednesdays. Has a WIP site up at djfalcon23.github.io with a landing page. Next steps are modals to display the content for the main sections, a carousel for other photos. After that, it's time to make a project page for his LED backpack with brake and turn signals for cyclists.

jonathanprozzi.net (Jonathan) – started a new Hugo project for his wedding which will be his "Hugo project" so he can feel free to move his main site over to WordPress. Bought and set up a new domain and a new Hugo project for that.

polarfire.net (Isaac) – In town visiting Marty. Spent quiet writing hour tracking down the source for his Pelican-based site which was last updated 2014 and getting the dependencies installed. Likes starting side projects, so might port it to Hugo. Many of his projects are related to owning his data on a home server. Next major step there is setting up backups w/ duplicity.

martymcgui.re (Marty) – Did some reading from the folks at @meetgretta (formerly signl.fm) and learned about a tool called Audiogram from WNYC. It generates videos from audio files for sharing on silos that have good video sharing support but not audio, which is most of them. Made an example post with an interview with Ben Werdmüller from the This Week in the IndieWeb Podcast that is syndicated to Twitter, Facebook, and Mastodon.

Other things:

  • djfalcon23 showed a cool use of parallax on firewatchgame.com.
  • Talked about automated captions for audio, showed off some of the Gretta demos.
  • djfalcon23 pointed us to @noopkat, who streams live development and was recently working on similar tools.
  • martymcgui.re did a quick demo of the micro.blog iOS app for posting tonight's photo
Left-to-right: polarfire.net, djfalcon23.github.io, jonathanprozzi.net, 

We hope that you'll join us for another HWC Baltimore, which will next meet on August 23rd and again September 6th at the Digital Harbor Foundation Tech Center!

Homebrew Website Club Baltimore August 23, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, IndieWeb demos, and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-08-23-homebrew-website-club

Facebook event: https://www.facebook.com/events/1450134815046568

Homebrew Website Club Baltimore August 9, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, wiki editing, IndieWeb demos and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-08-09-homebrew-website-club

Facebook event: https://www.facebook.com/events/280327909114061/

This Week in the IndieWeb Audio Edition • July 29th - August 4th, 2017

Audio edition for This Week in the IndieWeb for July 29th - August 4th, 2017.

This week features a brief interview with Ben Werdmüller recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

This Week in the IndieWeb Audio Edition • July 22nd - 28th, 2017

Audio edition for This Week in the IndieWeb for July 22nd - 28th, 2017.

This week features a brief interview with Johannes Ernst recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

🔖 Bookmarked http://altplatform.org/2017/07/28/an-introduction-to-the-indieweb/
An Introduction to the IndieWeb – AltPlatform

“Everyone’s desires and needs will be different. Work on what you find most interesting and useful first (the IndieWeb calls these itches). Make a list of what you use most often on your old social media silos or wish they had and work on that first.”

“Everyone’s desires and needs will be different. Work on what you find most interesting and useful first (the IndieWeb calls these itches). Make a list of what you use most often on your old social media silos or wish they had and work on that first.”

HWC Baltimore 2017-07-26 Wrap-Up

Baltimore's second July 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on July 26th.

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net – After setting up a local WordPress dev site last time, revisited his existing Hugo site. The Hugo documentation has received an update, so he walked through making a new site from scratch, found out the theme configuration for his old site was not working as Hugo docs suggest. Wants to make sure his Hugo experience isn't colored by a misunderstanding on his part. Feels stuck between wanting to improve his existing stack and workflow vs spending the time to convert everything to WordPress.

martymcgui.re – Inspired by IndieWeb Summit session on Events, made a couple of improvements to event posts on his site. First added a "subscribe to calendar" link to his front page and "Add to Calendar" links on his individual event pages so folks can get calendar reminders of his indie events. Second, added a webmention submit form ("did you mention this? post the URL here") to all his posts, which should make it easier to send indie RSVPs to his indie events. Set up a new iPod Touch with the micro.blog iOS client and has used it to post a couple of photos to his site without much trouble and a nice (if somewhat quirky) workflow. Has been changing up some of the microformats markup on his posts to try and make them work well with both Woodwind and Atom feeds generated by Granary.

We talked about a writing app called Ulysses, which Jonathan has been using for work and finds the writing is a faster process than his previous workflow with Markdown. Also talked sunk cost of working with the tools we already have working vs spending the time to set up and learn something new that might (eventually) be better. A tempting goal is to moving from posting to our personal sites and enjoying IndieWeb benefits for ourselves to making ourselves into ambassadors for folks in Gen2/3 by adopting WordPress + plugins.

Left-to-right: jonathanprozzi.net, martymcgui.re

We hope that you'll join us for an August HWC Baltimore, which will meet on August 9th and August 23rd at the Digital Harbor Foundation Tech Center! 

Baltimore Homebrew Website Club quiet writing hour has begun! Come work on your website!

🔖 Bookmarked https://eddiehinkle.com/projects/indigenous/
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 an iOS app that is in development. It’s goal is to provide a native iOS interface to the indieweb movement.”

This Week in the IndieWeb Audio Edition • July 15th - 21st, 2017

Audio edition for This Week in the IndieWeb for July 15th - 21st, 2017.

This week features a brief interview with Lillian Karabaic recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Replied to http://myhomeisthesea.com/indieweb-audio/
post from
Audio, SoundCloud, and the Indieweb

I’ve got a work-in-progress micropub client called Screech that can send audio posts to micropub-enabled sites.

This Week in the IndieWeb Audio Edition • July 8th - 14th, 2017

Audio edition for This Week in the IndieWeb for July 8th - 14th, 2017.

This week features a brief interview with Scott Jenson recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Homebrew Website Club Baltimore July 26, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, wiki editing, IndieWeb demos and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-07-26-homebrew-website-club

Facebook event: https://www.facebook.com/events/138120956769941/

HWC Baltimore 2017-07-12 Wrap-Up

Baltimore's first July 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on July 12th.

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net - finished up a post from the last HWC meetup about his thoughts on switching from Hugo to Wordpress. Had it all written, but forgot to publish it - largely because of the multistep Hugo publishing process! Says this illustrates that the process overhead of using the tool is clearly getting in the way. Started a local Wordpress install to get things going. Before switching - wants to figure out how to preserve the Hugo version of his site as a snapshot (maybe on a subdomain?). Cares about both the content and the presentation of it. Also wants to figure out another project to encourage him to learn Hugo.

Darius - started in on a portfolio-style site on Wordpress. Has a theme he likes but is struggling with customizing it due to its documentation. Thinking about what he wants to put on the site. Also found out that a Wordpress site that he manages for work was hacked by spammers, so worked on fixing that.

martymcgui.re - since last time, cleaned up microformats around his likes, reposts, bookmarks to add explicit p-name and e-content, so readers like Woodwind will show something more reasonable than the "implied" names. Hasn't been working much on his site, so spent some time on his IndieWeb wiki user page to read through and re-organize his itches to choose something to work on. Inspired by the 2017 IndieWebSummit session on events, started work on a Jekyll generator plugin that will create iCal .ics files for his event posts, so he can put "add to calendar" buttons on his indie events.

We chatted about the Battle for the Net, Wordpress security, Wordpress Outreach Club, intricacies of how the various IndieWeb Wordpress plugins and theming operates, and more!

Left-to-right: jonathanprozzi.net, Darius, martymcgui.re

We hope that you'll join us for the next HWC Baltimore, which will meet on July 26th at the Digital Harbor Foundation Tech Center!

Photo for tonight’s HWC Baltimore!

This Week in the IndieWeb Audio Edition • July 1st - 7th, 2017

Audio edition for This Week in the IndieWeb for July 1st - 7th, 2017.

This week features a brief interview with gRegor Morrill recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 85 - Suit, Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

This Week in the IndieWeb Audio Edition • June 24th - 30th, 2017

An extra-long, Summit-packed audio edition of This Week in the IndieWeb for June 24th - 30th, 2017.

This week features a brief interview with Doug Beal recorded at IndieWeb Summit 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, Day 11, and Day 85 - Suit.

Also includes music from Nightcore- 867-5309 / Jenny by Aoki Lapis.

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Homebrew Website Club Baltimore July 12, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, wiki editing, IndieWeb demos and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-07-12-homebrew-website-club

Facebook event: https://www.facebook.com/events/1716119405079431/

HWC Baltimore 2017-06-28 Wrap-Up

Baltimore's June 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on June 28th.

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net - Been very busy with work. Wrote a couple of posts since the last meeting. Tonight started a reflective post about his decision to use Hugo for his site vs Wordpress, which he already uses a lot for work. Feels like he has learned a little bit of Go (which Hugo is written in), but mostly has just learned Hugo and felt that's held him back. Interested in the Wordpress API and maybe move his site over because he wants to post more and still learn.

eddiehinkle.com - Been working on his site rewrite in Angular Universal. Today worked on micropub media endpoint. Is saving files successfully, now needs to add file extensions and return the Location URL. Also been working on Indigenous, his iOS micropub client. Been switching back and forth between the two as he makes progress or gets stuck on one or the other. Other stuff since last time: adding OwnYourSwarm, OwnYourGram. Having a micropub client on his phone has enabled him to send lots and lots of likes - enough that he decided to move likes out of his main social stream page and treat them as a reply.

djfalcon23 (domains currently expired) - been learning web development on and off for the last year. Now building a portfolio site using Bootstrap and trying out React, but it is a lot. Also trying to (re-)learn Android development.

martymcgui.re - Went to IndieWeb Summit and it was amazing! Added checkins to his site w/ OwnYourSwarm while there because of jealousy of seeing other folks checking in with Swarm. Really attracted to the gamification, but wants to make a checkin client so he doesn't have to give them his data. Also been cleaning up microformats on his site so that reply contexts on other site and in readers like Woodwind look better.

Chatted a bit about:

  • "Double-dipping" - choosing side projects that involve technology you already need to use (or learn) for work
  • Angular Universal, basically a server-side render of Angular which includes a static rendering of markup as well as all the scripts and data to "hydrate" the page
  • Saving posts on Facebook and trying to PESOS to a bookmark post, but the Facebook API seems to have those locked down.
  • Learning React is pretty overwhelming, lots of tooling and stuff up front that doesn't feel connected to a project.
  • Guided learning w/ online systems with guided courses like Pluralsight have been really helpful for Jonathan.
  • Gamification of Foursquare - coins for photos and random things, comparison with friends, weekly generated summaries with titles like "Weekend Getaways"
  • Talked about how some aspects of the "design language" of web sites have converged and solidified several years ago. djfalcon23 likes looking at the designs on the welovewebdesign Instagram page. Wants to see more like that in the world.
  • Talked about IndieWeb Summit and the videos available, particularly the Wordpress sessions.
  • Spent a lot of time on the Personal Web Sites examples.
    • Awesome suggestion by djfalcon23 to bring an inspirational website to the next meetings.
Left-to-right: jonathanprozzi.net, martymcgui.re, djfalcon23, eddiehinkle.com

We hope that you'll join us for the next HWC Baltimore, which will meet on July 12th and then again July 26th at the Digital Harbor Foundation Tech Center!

Photo for tonight’s Homebrew Website Club Baltimore

Great first day of #IndieWeb Summit! Really enjoyed the opening talks by Aaron, Tantek, Lily, and Ryan.

Also really loved the discussions about special micropub clients, events, updating the IndieWeb site to be less dev-heavy, and especially the lovely tour of interesting personal pages on the web.

Now for dinner and socializing and sleep!

About to kick things off at #IndieWebSummit

📍 Checked in at Mozilla Portland, Portland, OR.
#IndieWeb Summit day 1! Excited to have some good discussions with some fun people!

This Week in the IndieWeb Audio Edition • June 17th - 23rd, 2017

Audio edition for This Week in the IndieWeb forJune 17th - 23rd, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

📍 Checked in at Mozilla Portland, Portland, OR.
#IndieWeb Summit

Blue Star Donuts knows that silos are gonna silo. #IndieWeb

LIRR 🚆 to Jamaica Stn. en route to JFK. Excited to be on my way to IndieWeb Summit!

So excited for #IndieWeb Summit this weekend! Two tickets remain, if you want to join us in Portland, OR to build a web for you!

https://2017.indieweb.org/

Mozilla Portland 1120 NW Couch St #320, PortlandOregon

This Week in the IndieWeb Audio Edition • June 10th - 16th, 2017

Audio edition for This Week in the IndieWeb for June 10th - 16th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

🔖 Bookmarked http://altplatform.org/2017/06/09/feed-reader-revolution/
Feed reader revolution: it’s time to embrace open & disrupt social media – AltPlatform

“Ideally the increased competition will prod current social silos to open up and compete on a more even playing field in which they’re supporting these open protocols as well. Then anyone with a web presence can use it to communicate from one website to another (or one permalink URL to any other permalink URL) on the internet, in a way that’s as simple and easy as any of the methods that’s currently available in the closed social spectrum.”

“Ideally the increased competition will prod current social silos to open up and compete on a more even playing field in which they’re supporting these open protocols as well. Then anyone with a web presence can use it to communicate from one website to another (or one permalink URL to any other permalink URL) on the internet, in a way that’s as simple and easy as any of the methods that’s currently available in the closed social spectrum.”

This Week in the IndieWeb Audio Edition • June 3rd - 9th, 2017

Audio edition for This Week in the IndieWeb for June 3rd - 9th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Homebrew Website Club Baltimore June 28, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, wiki editing, IndieWeb demos and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-06-28-homebrew-website-club

Facebook event: https://www.facebook.com/events/191955804663668/

This Week in the IndieWeb Audio Edition • May 27th - June 2nd, 2017

Audio edition for This Week in the IndieWeb for May 27th - June 2nd, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

HWC Baltimore 2017-05-31 Wrap-Up

Baltimore's second May 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on May 31st.

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net - Since last time, did some cosmetic updates to site. Also did a lot of traveling. Catching up now on finishing a series of posts he started at last HWC (May 10th). Now one-and-a-half posts behind his schedule. Wants to stick with consistency of writing something once per week.

amyhurst.com - Working on a website for work (something that is usually on her "some day" list). Gathering student questions from emails into an FAQ on a Wordpress site.

martymcgui.re - Added JSON Feed to blog.adafruit.com because it was easy and why not? Also talked about webmention notifications in his home Matrix chat server via Hubot. Is interested in more textual/conversational interfaces for things in his life and fewer apps and pages to remember to look at.

metamage.com (jjuran.org) - All sites now HTTPS. A couple are HTTP/HTTPS for classic MacOS clients, others are HTTPS-only. Used PNG/GIF and CSS to make a screenshot of an emulator animate when moused-over (bottom of https://www.v68k.org/advanced-mac-substitute/). Some fun browser issues w/ image handling (dithering?) in Safari. His site uses a homebrew Perl static site generator, shared CSS across all his sites. Planning to rework it in the V language.

Chatted about Micropub becoming a W3C Recommendation, including going through Aaron Parecki's announcement post, which is a very clear walk through of the development process. Talked about micro.blog as an up-and-coming social platform that supports Micropub out of the box. Talked about the power of social nudges (like "how's that project going?") for making progress on projects. Two of us (jjuran and martymcgui.re) will be at IndieWeb Summit in Portland later this June and are looking forward to it!

Top-to-bottom, left-to-right: jjuran.org, amyhurst.com, martymcgui.re, jonathanprozzi.net

We hope that you'll join us for the next HWC Baltimore on June 28th at the Digital Harbor Foundation Tech Center!  

Replied to https://martymcgui.re/2017/05/12/172008/
post from
Homebrew Website Club Baltimore May 31, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Photo for HWC Baltimore 2017-05-31

🔖 Bookmarked https://microformats.io/
Microformats : Meaningful HTML

“By adding Microformats to your HTML, your website becomes more understandable to various kinds of computers.

  • Search engines can make sense of your HTML which allows them to display a better version in their search results.
  • Browser extensions can enable your readers to download information to their contacts, calendar, and maps apps.
  • Feed readers can be used to subscribe to your website’s feeds (blog posts, bookmarks, checkins, etc).
  • You can even use your website (with Microformats) to sign into other websites.”

“By adding Microformats to your HTML, your website becomes more understandable to various kinds of computers.

  • Search engines can make sense of your HTML which allows them to display a better version in their search results.
  • Browser extensions can enable your readers to download information to their contacts, calendar, and maps apps.
  • Feed readers can be used to subscribe to your website’s feeds (blog posts, bookmarks, checkins, etc).
  • You can even use your website (with Microformats) to sign into other websites.”

This Week in the IndieWeb Audio Edition • May 20th - 26th, 2017

Audio edition for This Week in the IndieWeb for May 20th - 26th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Site Updates: Webmention Notifications in Matrix with Hubot

Jonathan Prozzi and I have challenged one another to make a post about improving our websites once a week. This is me getting back on the train!

In a previous site update I wrote about setting up a system to notify me whenever my site received webmentions. Essentially, this meant that I could now get notifications on my phone and desktop whenever somebody interacted with my site, such as: replying to one of my posts on their own site, retweeting or favoriting one of my posts, or even RSVPs to my Facebook events.

One thing I didn't super like about this system is that it used the Pushbullet service which, while great, is not under my control.

I've been running a Matrix chat server at home for a while now. I primarily use it to chat with people in my household in IRC channels. I use a really nice client for Matrix called Riot, which runs in the browser, but is also available on Android and iOS, and is capable of sending notifications about chat events, which I have found really handy.

Recently, I've added a chatbot to my Matrix server named Hubot, thanks to the Hubot-Matrix adapter. Hubot is super neat because it is fairly easy to script up new behaviors, and it has nice built-in support for the web - both for making web requests, but Hubot also runs a server for accepting web requests. Once I realized this, it occurred to me that I could replace my previous notification system that uses Pushbullet with one that goes through Hubot.

First, a note on security. Exposing a chatbot's HTTP listener interface to the great wide internet comes at some risk! I made sure to the following:

  • I run Hubot behind a firewall, so no plain HTTP traffic can come directly across the internet.
  • Using another home server, I set up nginx to act as a secure HTTPS proxy, using a certificate from Let's Encrypt to encrypt all traffic that goes over the internet.
  • I decided that any behaviors I write for Hubot that use the HTTP listener will use some kind of secret token to ensure that the request is valid. I don't want spammers blowing up my chatrooms!

I decided that the bot should:

  • Allow a user to request webmention.io notifications for a given site into any room.
  • Generate and store a "callback secret" to work with webmention.io's Web Hook system and tell the user the URL and callback secret to configure over on the Webmention.io Dashboard.
  • Accept HTTP requests from webmention.io at something like <HUBOT_HOST>/hubot/wmio/notify
  • Verify that the request contains the callback secret
  • Generate a nice text summary of the notification based on its contents
  • Send the notification to the room that the user was in when they made the follow request.

With that in mind, I began learning lots about testing Hubot scripts, refreshing myself on Coffeescript, and so on.

I am now happy to introduce this first (janky) release of my Hubot Script, hubot-webmentionio-notify!

Once installed, you can start a conversation with your hubot and ask it to follow a site:

  you> hubot wmio follow mycoolsite.biz
  
hubot> @you OK! Use this as your Web Hook: <HUBOT_URL>/hubot/wmio/notify And use this as your callback secret: 1a2b3c4d5e6f7890000

The string "mycoolsite.biz" can actually be anything and should be something easy to remember in case you want to unfollow notifications later. Hubot doesn't check incoming mentions against it at the moment.

You can enter the URL and callback secret in the Webmention.io dashboard, and future webmentions will be sent to your Hubot and output into the room of your choice.

Notification example - a user on Twitter mentioned my Twitter handle in a post there.

I don't know how useful hubot-webmentionio-notify will be for other folks at the moment, but I am excited be getting these notifications via services that I control. I look forward to building more fun things with Hubot!

This Week in the IndieWeb Audio Edition • May 13th - 19th, 2017

Audio edition for This Week in the IndieWeb for May 13th - 19th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

This Week in the IndieWeb Audio Edition • May 6th - 12th, 2017

Audio edition for This Week in the IndieWeb for May 6th - 12th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Homebrew Website Club Baltimore May 31, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, wiki editing, IndieWeb demos and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-05-31-homebrew-website-club

Facebook event: https://www.facebook.com/events/777899845722051/

HWC Baltimore 2017-05-10 Wrap-Up

Baltimore's April 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on April 19th.

Below are notes from the "broadcast" portion of the meetup.

jonathanprozzi.net - not been making his weekly posts in challenges with Marty. Inspired by a nearby bookstore closing, realized he had done lots of learning in bookstores over the last ~15 years. New idea for a series of posts cataloging all the things learned in a specific place over the years. Wants to journal the things he is learning on a weekly(ish) basis to build an archive.

brianey.com - been writing up lots of ideas for his blog but not finishing them. Based on that unfinished work, started writing about some new topics on creativity. For example, writing about starting things vs. achieving them. Looking forward to writing those including cute graphics of badgers, (em)barkers, etc. and being inspired by those posts to take on other unfinished posts.

amyhurst.com - working on an FAQ page for all the questions she gets from students seeking to get into the grad programs that she manages. It should be a useful resource for students, but also for her to copy and paste into emails from students who don't or won't read it.

martymcgui.re - brought a bunch of posts from an old blog into his site, including old comments from disqus. Did updates to site plumbing so he can add syndication to his posts after the fact with micropub updates, allowing him to get webmentions and notifications of interactions on Twitter, FB, etc via brid.gy without pulling out a laptop.

We talked about the upcoming 2017 IndieWeb Summit June 24th-25th in Portland, Oregon and discussed the indie RSVPs on the site. From there we ended up on Aaron Parecki's site and chatted about the amount of information that is collected and shared, what things we'd like to be collecting for review about ourselves, what things we're comfortable publishing.

Left-to-right: martymcgui.re, brianey.com, amyhurst.com, jonathanprozzi.net. Also: many air plants.

We hope that you'll join us for the next HWC Baltimore on May 31st at the Digital Harbor Foundation Tech Center! 

Photo for tonight’s HWC Baltimore

Site-Updates: Easier POSSE with Micropub Edits!

Jonathan Prozzi and I have challenged one another to make a post about improving our websites once a week. This one should have gone up last week!

A few weeks ago I posted some thoughts about my IndieWeb setup called "Easier POSSE with Micropub Edits?" in which I wished for a tool that would let me take a given post from my site, syndicate it to silos like Twitter and Facebook (tweaking the content if I want), and updating the post on my site to show the links to those syndicated copies.

Why?

I failed to make at least one important thing clear in my original post – why do I care about syndication links? There are many reasons.

If I decide that a post should be syndicated to a silo, it's because I want it to reach the people who follow me there and, if that is true, I also want their interactions to come back to my site. So, in these ways, a post isn't "done" unless it is on my site, with syndicated copies on the silos I care about, and with syndication links for brid.gy to feed the interactions back.

Starting at the End

I decided to start by making my site's Micropub server support Micropub Source Content Queries and Micropub Updates. Any tool that helped automate syndication would need this plumbing to operate.

When implementing a new feature, it always helps to have something to test against. So, I went looking for a Micropub client which supported queries and edits. The test suite for Micropub at micropub.rocks includes a lovely implementation report grid, showing which Micropub clients support what features of the spec.

Of the clients listed, two of them were web-based and Open Source. I had played with and liked Inkstone in the past, but its edit features are currently considered a work-in-progress. So, I tried out Micropublish.net, and it was exactly what I was looking for.

Micropublish has a feature to let you enter a URL for a post on your site to edit. It will use Micropub source content queries to get the source data for that post and let you edit the content and other properties of the post. It can then send a Micropub update to save the updated version of the post back to your site, if your server supports updates. It even has a great feature for developers - a "Preview" button will show you exactly what request will be sent to your server for the update.

Screenshot of micropublish.net preview for an update to add a syndication link to a post

Micropublish.net is a great tool for testing out Micropub query and update support, but my Micropub server is bespoke, hastily-written, hand-rolled Python. So, while it was easy enough to add query support, it took me a while to get my code structure cleaned up, write some tests, and actually implement updates.

A New Workflow

I am pleased to say that it works and, with the help of Micropublish.net, I now have a functioning workflow for publishing to my site and syndicating to silos like Twitter and Facebook, even from my phone, without having to open my laptop, edit YAML data, and push git repositories around. It looks like this.

  • Make a new post to my site with a micropub client like Quill.
  • Open the post for editing in micropublish.net (I use Url Forwarder for Android to make this super easy on my phone, a bookmarklet makes it easy on my laptop).
  • In a new tab, log in to Twitter and make a similar post, copy the URL to the new tweet into the Syndication field on my post.
  • Repeat the steps to make posts on Facebook, Mastodon, etc., copying their URLs into the Syndication field.
  • Finally, hit "Update" in micropublish.net to update my post with the syndication links.
Screenshot of micropublish.net with new syndication links

This is still a very manual process, but it now makes it possible to finish a post in a way that I couldn't before. In the spirit of manual until it hurts, I will use this for a while and see what existing pain points remain, and what new ones appear, to help decide what comes next.

Thanks to Barry Frost for micropublish.net and to Tantek for the nudge to write an update!

This Week in the IndieWeb Audio Edition • April 29th - May 5th, 2017

Audio edition for This Week in the IndieWeb for April 29th - May 5th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

This Week in the IndieWeb Audio Edition • April 15th - 21st, 2017

Audio edition for This Week in the IndieWeb for April 15th - 21st, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Homebrew Website Club Baltimore May 10, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, wiki editing, IndieWeb demos and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!
  • Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-05-10-homebrew-website-club

Facebook event: https://www.facebook.com/events/630302647165359/

HWC Baltimore 2017-04-19 Wrap-Up

Baltimore's April 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on April 19th.

Notes from the "broadcast" portion of the meetup.

brianey.com – Been working on some content based on personal notes, which he takes all the time, about things like stuff he's read, etc. Thought about turning ~5 of his notes at a time into monthly lists, but has been writing a lot. Might be more like each note becomes a paragraph-long post. He also manages a newsletter that usually covers one topic, but might automate these new "listy" posts into a collection for the newsletter.

jonathanprozzi.net – Been working on a longer content post, part two of a series that started in March about creativity and code and his personal learning journey. Wants to keep up with post-a-week challenge. Started capturing ideas because he tends to forget topics if he doesn't get started on them. Doesn't want to have long spans of time between posts, so needs a system to keep track of posting as he gets too busy to take big chunks of time.

martymcgui.re – Been working on cleaning up cruft in his site implementation, not a lot of publicly visible stuff. Also been thinking a lot about things that stop him from posting, like not being able to easily syndicate posts while on mobile, and thinking of plans to make it easier. Tonight worked on the first part of supporting micropub edits for his site by working on source queries.

We also had a good discussion about how folks track their projects, keep ongoing notes, nudge themselves to make progress, and more. We talked about tools like Google Calendar and Tasks, laverna.cc, "GTD", and more that I forgot to write down.

Left-to-right: jonathanprozzi.net, mysterious air plant, brianey.com, martymcgui.re

We hope that you'll join us for the next HWC Baltimore on May 10th back here at the Digital Harbor Foundation Tech Center! It's an "Off-Week" for the usual HWC schedule. After that we're back on track with another "On-Week" HWC on May 31st!

Easier POSSE with Micropub Edits?

Update: thanks to Ryan Barrett for pointing me to his Keep Bridgy Publish dumb post, which explains why Bridgy doesn't include the features mentioned below!

Nerd alert: This post is me geeking out and will involve talk of protocols.

In keeping with the IndieWeb concept of POSSE (Publishing on my Own Site, Syndicating Elsewhere), I try to make social media posts on my own site first and then make similar (not always identical!) posts to my accounts on silos like Twitter and Facebook. I then add links to the posts on my site indicating that you can find the "syndicated copies" of that post on those silos.

My process for doing this is something like:

  • Make a new post, likely with a micropub client like Quill.
  • Log in to Twitter and make a similar post, making note of the URL to the new tweet.
  • Log in to Facebook and make a similar post, making note of the URL to the new FB post.
  • Edit the metadata to my post to indicate the new syndication links.
  • Re-publish the post on my site.

Because of the way my site is set up, this manual process requires the use of my laptop, so I can't do it on the go.

When thinking of ways to automate this process, I found myself drawn to another nice IndieWeb tool called Telegraph. Telegraph takes the URL for a post, finds links inside that post, and (if they support webmentions) allows me to notify those sites about that my post links to theirs with a single click.

Excerpt from Telegraph's UI with buttons to Send Webmention to supported URLs

I like the way Telegraph works for several reasons:

  • It's not purpose-built for a single website - it can be used for sending webmentions from any site that publishes their content with the right markup to any site that can receive them.
  • It puts the final decision to send a mention in my hands - I can choose to send mentions to any particular link mentioned in my post, or not.
  • With a bookmarklet, the process of sending webmentions becomes very simple. I visit the page for my post, click my Telegraph bookmark in my browser, and Telegraph shows me the links and send buttons for my post.

There already exists a great tool for copying content from my site to certain silos: brid.gy. While brid.gy's primary use case is to use webmentions to syndicate comments and other activity from silos onto your own site, brid.gy also has a Publish feature which accepts a URL from your site and attempts to create a similar post on the silo of your choice. Brid.gy Publish is a great feature, and I make good use of it. However, there are still a few pain points that I feel when using it:

  • While Brid.gy Publish gives a nice preview of what it will do, I can't tweak the content before publishing without editing my own post.
  • Brid.gy does not, as far as I can tell, support bookmarklet functionality. So, publishing takes multiple steps:
    1. Visit my brid.gy profile page for a particular silo account.
    2. Enter the URL for the post on my site.
    3. Approve the post.
    4. Copy the URL for the new silo post from brid.gy.
  • Finally, while Brid.gy lets me know in its UI that my post succeeded, Brid.gy has no mechanism for informing my site that the new syndicated post is available. I still need to enter the syndication URLs into my post manually and re-publish my post.

With that groundwork of existing tools, here is what (I think) my ideal workflow would look like:

  1. Make a new post to my site, likely with a micropub client like Quill.
  2. While looking at my post, click a bookmarklet that takes me to a syndication tool.
  3. The syndication tool shows me previews of what my post would look like on each silo where I'd like to publish. I can tweak the content, if needed.
  4. A single "Publish" click for each silo would create the post on that silo, but would also update my website with the new syndication link.

This tool seems non-trivial to implement, but I think there are several building blocks which could be quite useful:

I am not currently aware of anyone who does POSSE with this particular flow. I would be interested to know other folks' thoughts on this! Feel free to let me know with a post on your own site that mentions this one, or hit me up in the #indieweb-dev IRC chat!

Further Reading:

This Week in the IndieWeb Audio Edition • April 8th - 14th, 2017

Audio edition for This Week in the IndieWeb for April 8th - 14th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Site updates: simplifying media, complicating mentions

Jonathan Prozzi and I have challenged one another to make a post about improving our websites once a week. I'm late with this one!

Most of the features on my website are experiments in learning new things. Sometimes I learn a better way of doing something that I've already built into the site and it's time to migrate!

Moving Media files from Git LFS to a Media Endpoint

I build my site with Jekyll, and I store my site's configuration and text content via Git. One of the things that most folks avoid with Git is storing text content (which fits into Git's model of efficiently storing differences over time) with large binary files like images, etc. (which Git cannot manage as efficiently).

When I first set up my site, I made use of Git LFS ("Large File Storage") for managing anything that wasn't text. Any images, video, or audio that I added to my site was stored in an _assets/ folder in a way that matched uploaded files to the posts they were a part of. Git LFS would transparently ship those files off to a secondary server rather than include their content in the Git repository itself. I had to go through some hoops to set up my local GitLab server to support Git LFS and to set up Git LFS with the server that handles receiving new posts via Micropub, compiling and deploying the site.

It turns out that there are many reasons that a site would want to handle media files separately from the text content that refers to them. In fact, it is a common enough pattern that the Micropub standard includes a definition for a separate "media endpoint" to handle file uploads. I shared a Micropub media endpoint implementation that I built called Spano a while back, and it has been working well with support from tools like Quill. So the text content of my site is served from https://martymcgui.re/, and my media files from https://media.martymcgui.re/. With a couple of changes in my code and my workflows, this has become the way I handle all media files for my site.

However, I still had a bunch of files in site being handled by Git LFS, and some of my Jekyll code (plugins and templates) for showing embeds expected files to be on the local filesystem. This past week I took some time to write some scripts to find all references to those local files, migrate them to my media server, and update the outgoing links. I also updated my embed handling so it didn't rely on local files. This let me delete a lot of local metadata I was keeping but not using, like all the EXIF tags in uploaded photos. I am now Git LFS free and it feels like one less thing to worry about.

Better Caching for Mentions from Webmention.io

When I finally started displaying webmentions, I had a very simple model for how to cache all the info from webmention.io. Basically: I stored all mentions in a big array and, when my site went to fetch new mentions, it would keep fetching until it saw the "last" mention again. This led to a bit of a bug where someone might send me a mention, update their page, and send the mention again. My site would not be able to recognize the "last" mention, so it would fetch all my mentions again, leading to everything appearing twice.

This past week I rewrote my mention handling to avoid this problem by replacing this array and storing mentions in a hash based on the source and target. The new code also checks to see if the verification date of the mention has changed (giving me a way to detect and notify about changed mentions in the future). I also reorganized my mention cache to include an index by the target URL on my site. This makes it a bit quicker to find mentions for a given page when rendering out the site.

Neither of these changes are really visible to readers of my site, but they have been useful for cleaning things up. The webmention.io handling in particular has brought my plugin a lot closer to being something I could release for other people to use!

This Week in the IndieWeb Audio Edition • April 1st - 7th, 2017

Audio edition for This Week in the IndieWeb for April 1st - 7th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

RSVP'd to an event https://2017.indieweb.org/

Mozilla Portland 1120 NW Couch St #320, PortlandOregon

I'm going!

IndieWeb Summit in Portland, OR Jun 24-25th!

Looking forward to meeting some lovely IndieWeb folks!

Site updates: showing emoji reactions

Inspired by Eddie Hinkle's recent post about viewing webmentions, I decided to improve the way I display webmentions on my site.

TL;DR, my site now pulls attempts to recognize single-emoji comments and display them as a "Reaction".

Slightly longer version - my site uses webmention.io for handling webmentions, and I use brid.gy to backfeed interactions from Facebook to my own site. The way brid.gy handles Facebook reactions other than the standard "like" is a little quirky - they show up in webmention.io as a "reply" with a single emoji as the "content".

Using the Ruby twemoji library, my site checks the "content" of a reply against the emoji index and, if the content is a single emoji, pulls it out of the usual "reply" display and puts it in a facepile. The emoji itself is shown as an icon in the corner of the little face image.

Example of some ❤️ reactions from Facebook

While I was at it, I cleaned up a lot of my webmention-handling template to make things much clearer. This will make things easier for folks that want to re-use this code when I (eventually) release this as a Jekyll plugin.

Tonight is a Homebrew Website Club night, but Baltimore is not having another official meetup until April 19th. Still, I wanted to get something done to continue my deal with Jonathan to post something IndieWeb related at least once per week.

This Week in the IndieWeb Audio Edition • March 25th - 31st, 2017

Audio edition for This Week in the IndieWeb for March 25th - 31st, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Site updates: /mentions page and notifications

Jonathan Prozzi and I have challenged one another to make a post about improving our websites once a week. I'm a little late with this one!

I recently added support for displaying mentions, such as likes, reposts, comments, etc. from around the web that refer to the posts on my site. One thing the update didn't do is catch another type of mention, such as when someone mentions me in a tweet (example). These get fed to my website by brid.gy, but weren't displayed anywhere.

So, I created a /mentions page for displaying these mentions. In the future, when a post mentions my homepage, the result will show up on the mentions page.

Screenshot of the Recent Mentions page, including some tweets that mention @schmarty

My mentions still don't yet update in real time - they are compiled into my site whenever I make a new post. That's coming up in the future, but I have taken one more step towards real-time interactions with notifications!

Webmention.io, the service that I use for accepting and storing webmentions, has a WebHook option that can notify your site whenever a new webmention has been received. I wrote up a simple Python service using Flask that will listen for these messages from webmention.io and send them to me via PushBullet, a notification service that I've been using for a while for other projects.

Webmention.io WebHook configuration

Now, I'll see a notification on my phone and laptop when another site sends me a webmention!

Update: Here's an example notification!

Screenshot of a mobile notification from Pushbullet
PushBullet notification that I have received a new mention.

Homebrew Website Club Baltimore Apr 19, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Join us for an evening of quiet writing, wiki editing, IndieWeb demos and discussions!

  • Create or update your personal web site!
  • Finish that blog post you’ve been writing, edit the wiki!
  • Demos of recent IndieWeb breakthroughs, share what you’ve gotten working!

Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Join the #indieweb chat!

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: https://indieweb.org/events/2017-04-19-homebrew-website-club

Facebook event: https://www.facebook.com/events/1017476845052512/

Replied to http://boffosocko.com/2017/03/25/this-week-in-the-indieweb-audio-edition-%e2%80%a2-march-18th-24th-2017/

I write a text script for each of these audio editions, which I would like to find a way to add to the post as a transcript for the audio. A couple of (silly?) things stopping me: (1) I’m not sure of the best way to lay that out and mark it up for the widest use and (2) My script format includes lots of notes-to-self that need to be cleaned up, adding yet-another-editing-task to getting this podcast out. :}

This Week in the IndieWeb Audio Edition • March 18th - 24th, 2017

Audio edition for This Week in the IndieWeb for March 18th - 24th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Replied to http://eddiehinkle.com/article/2017/03/receiving-webmentions.html

Congrats and have a Webmention! I love that you have a roadmap.

Something like WebSub (formerly PubSub) would be great for triggering a notification when a new Webmention arrives, without having to poll!

HWC Baltimore 2017-03-22 Wrap-Up

Baltimore's Marty 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on Mar 22nd.

Notes from the "broadcast" portion of the meetup.

martymcgui.re has been busy since the last meeting. Added tags and displaying webmentions to his site. Launched Screech, a micropub client for posting audio. Uses it to post an audio edition of the This Week in the IndieWeb as a podcast. Started looking into better reply contexts for sites with no microformats2 info, maybe starting with Soundcloud (which requires using their API to convert permalinks into embeds) or using Aaron Parecki's X-Ray.

brianey.com missed the last meeting, so it's been a while. Working on a new site at thebrianyoung.com, set up his WordPress network to include IndieWeb plugins, including things like accepting Webmentions. Some small updates to imnotwrong.com. Committing to more (of everything) for next time.

eddiehinkle.com started blogging again back in February. Dusted off Jekyll and started delving back into IndieWeb. Reads a lot of books and wanted to have that info on his site from Goodreads. Uses a Node.js script to dump Goodreads data into Jekyll _data/ folder. Added microformats to pages. Posts project 365 photos to site, a little bit of a burden since everything is still manual. Current project is micropub. Plan is to set up a Node.js "controller" because he wants to do more responses and interactive things. Today added "On This Day", showing posts from the same day in previous years

maryreisenwitz.com was in the other half of the room working on laser-cutting projects, but did talk informally about wanting to add e-commerce to her site.

We discussed the shutdown of App.net, the upcoming micro.blog, the challenges of building everything yourself, and some of the laser-cutting projects that our host Mary was working on for an event next weekend.

Left-to-right: eddiehinkle.com, brianey.com, martymcgui.re

We hope that you'll join us for the next HWC Baltimore in April back here at the Digital Harbor Foundation Tech Center! Check back soon for the date!

Photo for HWC Baltimore 2017-02-08

Site updates: Displaying Webmentions!

Webmentions are one of the most interesting and powerful technologies floating around the IndieWeb. At their most basic, they sites on the web to interact by sending a notification when a page on one site links to a page on another. When combined with machine-readable metadata like microformats2, they enable really neat social interactions between sites, feeding back likes, comments, bookmarks, shares, event RSVPs, and plenty more.

Receiving Webmentions

A site doesn't have to do all its own Webmention handling, and there are a few services that will handle them for you. I set up my website with the Webmention.io service back in August 2016 (so long ago!) and it's been accepting mentions from other sites since then. And, while there aren't a lot of websites that send Webmentions natively, there are services like Bridgy which uses Webmentions to backfeed social interactions to my site from sites like Facebook and Twitter. Pretty neat!

Sending Webmentions

When I publish a post with a link to a site that support Webmentions, I still need to actually send that notification. I haven't yet built a tool that does that for my own website, but I have been able to make use of Aaron Parecki's Telegraph, which will take in a link to one of my posts and parse it for outgoing links, find out of the targets of those links support Webmentions, and allow me to send them with the press of a button. It's ridiculously easy to use and has the added benefit of letting me pick-and-choose which links go out as Webmentions.

Displaying Webmentions

Webmention.io has been collecting mentions for my site for something like 6 months, but they don't just magically show up on my site! Webmention.io provides an API for fetching the mention data for individual pages, or all mentions for my domain.

My site is built on Jekyll, a static site generator, and I like that so far it doesn't rely on JavaScript for folks to read it. I didn't want to require JavaScript for displaying mentions, so I needed a way to "bake in" my mentions for each post. I was inspired by Aaron Gustafson's jekyll-webmention_io, but found that I didn't like some of the choices in markup or the way that it stored the mention data, so I went ahead and wrote my own. It's still heavily a work-in-progress, but I do hope to release it for other folks to use once it's more stable.

What works? Let's see!

Here's an example post with some Likes and RSVPs (both "yes"es and "maybe"s):

And an example post with some replies backfed from Facebook:

All of these are being displayed with the data that Webmention.io provides with its API, and there are some types of post that I would like to handle differently such as the ❤️ above (which was a Facebook "heart" reaction), and I'd like to include a JavaScript enhancement that will show any new mentions, so they aren't sitting in "limbo" until I make a new post.

Overall, I'm really excited to finally be showing these on my site! I think Webmention is a pretty critical part of bringing the "social web" into the IndieWeb and back out of the silos. I am grateful to all the folks that have made this possible with their work on standards and tools!

This Week in the IndieWeb Audio Edition • March 11th - 17th, 2017

Audio edition for This Week in the IndieWeb for March 11th - 17th, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Earlier this week I announced Screech, a simple client for posting audio content (such as podcasts) to your own site using Micropub.

I’m pleased to announce that Screech is now available publicly. You can check it out at https://screech.schmarty.net/.

Screech also now has an adorable logo, thanks to a couple of pieces of public domain art.

Screech - a micropub client for podcasting

I've been working on my idea of what IndieWeb podcast publishing looks like for some months now, both with the improvised We Have to Ask comedy podcast that I make with Jonathan Monroe and more recently with the This Week in the IndieWeb Audio Edition that I started producing last month.

In addition to following standard IndieWeb-friendly practices like using microformats2 feeds, backfeeding social interactions from Twitter and Facebook with bridgy, and exploring other interesting audio markup tricks, I wanted a tool that made it easy for me to publish new content to my sites via the Micropub protocol, which supports sending audio media files.

I didn't see another micropub client in the wild that supported audio files in the way that I wanted, so I made my own.

Screech is an audio-publishing-focused micropub web client with a Python server component built on Flask. Screech supports logging in with your own site using indieauth and posts to your site's micropub endpoint.

It's still a work-in-progress, but the basic flows work well enough for my needs.

Screenshot of main Screech posting interface with form fields.
Screech interface before posting an episode of This Week in the IndieWeb Audio Edition

One fun feature of Screech is that once you select an MP3 file for upload, it uses the jsmediatags library to pull out information about the track, such as its duration, track title, album and artist info, etc. This info is outside the scope of the Micropub standard, but if you want to add support to your server, you'll see those properties arrive with names like "id3-title", "id3-artist", etc.

Edit, March 17, 2017 — Screech is available at screech.schmarty.net. If you'd like to run it yourself, add features, or fix bugs, you can find the source code and instructions on GitHub.

There are many TODOs yet on my plate for Screech before I'd consider it "done", such as micropub media endpoint support, syndication support, adding a photo to the post as a "poster" image, and more.

I'd love to hear feedback from the IndieWeb community! What do you think it means to be an "IndieWeb podcaster"? What features would make Screech useful for you?

This Week in the IndieWeb Audio Edition • March 4th - 10th, 2017

Audio edition for This Week in the IndieWeb for March 3th - 10th, 2017.

Thanks to everyone for the feedback so far! In responding to a couple of listener requests, I slowed my speaking rate down for this week’s updates. However, because I am re-using some common clips, it sounds like I am speeding up and slowing down quite a bit. My apologies for any confusion this causes! I plan to re-record the common samples soon.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Homebrew Website Club Baltimore Meetup March 22nd, 2017

Digital Harbor Foundation Tech Center 1045 Light St., BaltimoreMD, 21230

Create or update your personal web site!

  • Finish that blog post you’ve been working on
  • Demos of recent IndieWeb breakthroughs
  • Share what you’ve gotten working
  • Ask the experts questions

Join a community with like-minded interests. Bring friends that want a personal site!

Any questions? Ask in chat: http://chat.indieweb.org/today#bottom

Optional quiet writing hour starts at 6:30pm. Meetup begins at 7:30pm.

More information: http://indieweb.org/events/2017-03-22-homebrew-website-club

Facebook event: https://www.facebook.com/events/1450557171642865/

This Week in the IndieWeb Audio Edition • February 25 - March 3, 2017

Audio edition for This Week in the IndieWeb for February 25th - March 3rd, 2017.

You can find all of my audio editions here.

You can subscribe with your favorite podcast app on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 49 - Floating, Day 9, and Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Site updates: Syndication links

A common IndieWeb principle, after "Own Your Data" is Publish on your Own Site, Syndicate Elsewhere .

In general, this means that you should make posts on your own site, then copy the post to silos like Twitter, Facebook, etc., to reach the folks in those communities. To complete the process, include links on your site from the original post out to the syndicated copies.

One fun reason to do this is that tools like brid.gy use syndication links in order to backfeed comments and reactions from silos like Facebook and Twitter to your own site.

I'd been collecting these links for a while and displaying them in a "hidden" way - so tools like bridgy could see them, but a human reading the page would not.

Yesterday I added a "See also:" section that includes links out to any syndicated copies of my posts on other sites.

This Week in the IndieWeb February 18 - 24, 2017

Audio edition for This Week in the IndieWeb for February 18th - 24th, 2017.

You can find all of my audio editions here.

And maybe you can subscribe with whatever you consume podcasts with on huffduffer.

Music from Aaron Parecki’s 100DaysOfMusic project: Day 48 - Glitch, Day 9, Day 11

Thanks to everyone in the IndieWeb chat for their feedback and suggestions. Please drop me a note if there are any changes you’d like to see for this audio edition!

Replied to https://stream.jeremycherfas.net/2017/a-podcast-about-the-indieweb
post from
A podcast about the Indieweb

Jeremy raises some great points here that mirror some of my own worries about trying to summarize the discussions happening on the IndieWeb wiki and the many #indieweb chat channels.

When I had the initial idea to do an “audio edition” of This Week in the IndieWeb, the question of “who is the audience” seemed to have an obvious answer: folks who would read the newsletter but preferred an audio edition.

However, it quickly became clear that doing a “direct read” of the newsletter — where much of the content is names and links to changes on wiki pages — wouldn’t make a lot of sense when spoken aloud. So, my first crack at the format evolved into answering a slightly broader question: “how can I explain these updates to someone who might not already be familiar with the wiki?”

My short (and unhelpful) answer is: this is hard. The discussions on the wiki tend to be very technical, jargon-heavy, and touch on an extremely wide set of topics. In the first episode, I attempted to give some structure with groupings like “IndieWeb Events”, “Software and Services”, “Silo Updates”, “Silo Issues”, etc., but I agree with Jeremy that it is still very fast and dense. While I want to keep the podcast short (less than 10 minutes), I think a next positive step would be to give topics more time to breathe with some explanatory commas that give context.

It is my hope that projects like this podcast will help find new ways to phrase and frame the things that the IndieWeb community are doing and talking about, helping to reach new folks. I have a feeling it is going to be a lot of work. :}

Site updates: Tags and Media Fragments

Over the weekend I created an English audio version of the most recent This Week in the IndieWeb newsletter. This led to some great discussion in the #indieweb chat about improvements and next-steps in creating a podcast from audio posts on one's own website. Today I added a couple of features to my site towards that end.

First up, I added support for "tag aggregations" - essentially, pages that list all posts with a certain tag. So, any future editions of this audio newsletter that I post can be tagged with "this-week-indieweb-podcast" and will then show up on the "This Week in the IndieWeb Podcast" page. It should soon be possible to feed that page to a tool like Granary to convert the feed on that page, with its audio entries, into an RSS feed suitable for subscribing with a podcast app.

Next up, I added support for "Media Fragments", a W3C recommendation that allows linking to a specific timestamp to start (and even stop!) playback of video and audio. Aaron Parecki's recently implemented this on his own site and was kind enough to share the implementation! Now, you can create links that jump to a specific time of any audio or video post on my site.

For example, if you want to quickly jump to the part of the This Week in the IndieWeb audio edition that contains info about the next upcoming Homebrew Website Club meetings, it looks like this: https://martymcgui.re/2017/02/18/151503/#t=54

Media fragments could enable some fun things, such as a list of links that index directly to particular sections of a long recording.

Aaron also documented a fun way to use media fragments for attribution of other people's audio or video posts. For example, my audio newsletter made use of several of Aaron Parecki's pieces from his 100DaysOfMusic project. I gave attribution by linking to Aaron's posts from my post, and because Aaron's site supports Webmentions, you can see that my post shows up in the "mentions" list for one of the clips I used. With media fragment support, it should be possible to have the mentions on Aaron's post link directly to the exact portion of my audio post where it appears!

Features like this give me hope that it could be possible to make an IndieWeb podcasting experience that is richer and more interactive than the current directory model.

HWC Baltimore 2017-02-08 Wrap-Up

Baltimore's February 2017 meetup for Homebrew Website Club met at the Digital Harbor Foundation Tech Center on Feb 8th.

Notes from the "broadcast" portion of the meetup:

martymcgui.re - reworked his micropub server to support the media endpoint he was working on last time. also added venue pages to his site for event locations. made progress on event-posting micropub client (eventually will be released publicly). also added support for deleted posts with dt-deleted and meta http-equiv status 410 gone.

jonathanprozzi.net - refactoring site templates. spent a lot of time debugging some simple problems, h-cards. wants to figure out a way to track incremental work on website when other work things are crazy so threads don't get lost. wants to keep segmenting his Hugo template while maintaining mf2 stuff. goal is to get to working on appearance of his site theme.

jjuran.org - currently working on a CV on his site. first use of img srcset to feed high-res images to clients that want them. uses his own Perl-based static site generator that is "showing its age". working on his own programming language so he can spend most of his time writing code in a high-level language.

We discussed the challenges of building your own tools for fun vs. starting from the goal of posting more (e.g. via Wordpress).

Left-to-right: martymcgui.re, jonathanprozzi.net, jjuran.org

We hope that you'll join us for the next HWC Baltimore on March 22nd back here at the Digital Harbor Foundation Tech Center.

Photo for HWC Baltimore 2017-02-08!

Spano - a minimum-viable Micropub Media Endpoint

Micropub is an open API standard to create posts on one's own domain using third-party clients  and currently a W3C Candidate Recommendation. One of the (semi-) recent additions is the idea of a Micropub Media Endpoint. The Media Endpoint provides a way for Micropub clients to upload media files to a Micropub service, receiving a URL that is sent along in place of the file contents when the post is published.

Some of the things I like about Micropub media endpoints include:

  • The spec allows the media endpoint to be on a completely separate domain from the "full" micropub endpoint.
  • The spec doesn't specify anything about how the files are stored or their final URLs or filenames.
  • They make it easy to separate the handling of (large) media files from the (presumably much smaller) content and metadata of a post.
  • They enable Micropub clients to upload multiple files without creating multiple posts. This makes it simpler to create posts that contain multiple images, like a gallery.

Personally, I wanted a Micropub media endpoint server with a few extra properties:

  • It should be able to run completely separately from, and therefore work in conjunction with, any other micropub server implementation.
  • It should not store duplicate files. If the same file is uploaded twice, the same URL should be returned both times.
  • It should not allow overwriting files. If two images of the same name are uploaded, both are kept and receive different URLs.

Enter HashFS

My extra features above essentially describe a content-addressable storage storage system. CAS is a way of storing and accessing data based on some property of the actual content, rather than (potentially arbitrary) files and folders.

HashFS is a Python implementation of a content-addressable file management system. You give it files, it will put them in a directory structure based on a cryptographic hash function of the contents of that file. In other words - HashFS can take any file and give back a unique path to that file which will never change (if you later upload a new version of the file, it gets a different path).

To add the the fun of HashFS, there is a Flask extension called Flask-HashFS which makes it easy to expose a HashFS file store on the web via the Python Flask framework.

Introducing Spano

Spano is a Micropub Media Endpoint server written in Python via the Flask framework which combines Flask-HashFS for file storage with Flask-IndieAuth (introduced earlier) to handle authentication and authorization.

Spano is a server-side web app that basically does one thing: it accepts HTTP POST requests with a valid IndieAuth token and a file named "file", stores that file, and returns a URL to that file. The task of serving uploaded files is left to a dedicated web server like nginx or Apache.

Using Spano

Once Spano has been set up and configured for your domain, uploading is a matter of getting a valid IndieAuth token. IndieAuth-enabled Micropub clients will do this automatically. For testing by hand I like to log in to Quill and copy the access token from the Quill settings page. With token in hand, uploads are as easy as:

curl -D - -F "file=@myfile.jpg" \
  -H"Authorization: Bearer xxxx..." \
  https://media.example.com/micropub/

Which should output a response like:

HTTP/1.1 100 Continue

HTTP/1.0 201 CREATED
Content-Type: text/html; charset=utf-8
Content-Length: 108
Location: https://media.example.com/cc/a5/97/7c/2004..2cb.jpg
Server: Werkzeug/0.11.4 Python/2.7.11
Date: Thu, 26 Jan 2017 02:40:05 GMT

File created: https://media.example.com/cc/a5/97/7c/2004..2cb.jpg

Integrating Spano with your Micropub Endpoint

If you want Micropub clients to use Spano as your Media Endpoint, you need to advertise it. This is handled by your "main" Micropub server using discovery. Essentially, a client will make a configuration request to your server like so:

https://example.com/micropub?q=config

And your server's response should be a JSON-formatted object specifying the "media-endpoint". A bare minimum example:

{
  "media-endpoint": "https://media.example.com/micropub/"
}

In addition to advertising the media-endpoint, your Micropub server must be able to handle lists of URLs in places where it would normally expect a file.

For example, when posting a photo from Quill without a media endpoint, your Micropub server will receive a multipart/form-data encoded file named "photo". When posting from Quill with a media endpoint, your Micropub server will instead receive a list of URLs represented as "photo[]=https://media.example.com/cc/...2cb.jpg". Presumably this pattern would hold for other media types such as video and audio, if you are using Micropub clients that support them.

This particular step has been an interesting challenge for my site, which is a static site generated by Jekyll. My previous Micropub file-handling implementation expected all uploaded assets to live on disk next to the post files, and updating my Jekyll theme and plugins to handle the change is a work in progress. I eventually plan to move all my uploads out of the source for my project in favor of storing them with Spano.

Feedback Welcome!

Spano is probably my second public Python project, so I'd love feedback! If you try it out and run into issues, please drop me a line on GitHub. Or you can find me in the #indieweb chat on freenode IRC.

I'd also like to thank Kyle Mahan for his Woodwind Flask server application, which inspired the structure of Spano.

Flask-IndieAuth - A Python Library for Micropub Servers

One of the things I like about the IndieWeb community is that while they are building tools for themselves, they also tend to release useful parts under Free Software licenses. This helps other developers join the community more quickly, but it also tends to help improve the quality and feature sets of these projects as others use and add to the source.

One of my favorite things to come from the IndieWeb folks is the Micropub API standard, which defines some simple protocols for clients to send post data (the kinds of things you'd share on a blog or social media: images, short plain text, long articles, tags, and more) to servers for posting. One upshot is that if your server accepts Micropub, you can use one of many clients to put content on your site. I'm using a dedicated editor from Aaron Parecki's Quill to write this post, but there are lots of alternatives that are aimed at special use cases. For example, Kyle Mahan's Woodwind is an IndieWeb reader app that happens to include functionality for posting replies, favorites, reposts, and even RSVPs directly to my site via Micropub.

Another favorite is the idea of IndieAuth for web sign-in. At a high level, the idea is that you create two-way links between your website and your user profile on some other silo. For example, on your homepage you add a link to your Twitter profile and on your Twitter profile you link back to your homepage. For a client that supports IndieAuth, I can log in using my homepage URL by verifying that I can log in to my Twitter account.

My own personal Micropub implementation is a little pile of spaghetti Python code making use of the Flask framework. I use IndieAuth to handle authentication (i.e. - proving that a post comes from an app that I've logged into) and authorization (i.e. - proving that I gave that app permission to post to my site). As I've started improving my Micropub implementation, I found it useful to extract that portion of my code into a library that can be used with other Flask applications.

Introducing Flask-IndieAuth

Flask-IndieAuth is a Flask extension that adds the ability to require a client to send a valid IndieAuth token when making requests to any route. For example:

from flask_indieauth import requires_indieauth

@app.route('/micropub', methods=['GET','POST'])
@requires_indieauth
def handle_micropub():
    # ... handle the request

The @requires_indieauth decorator runs before the code for the route. It currently looks for an IndieAuth token in one of three places, in order:

  • HTTP Header (e.g. "Authorization: Bearer xxxx...xx")
  • HTTP form data or query string (e.g. "?access_token=xxxx...xx")
  • The body of a JSON-encoded POST (e.g. {"access_token": "xxxx...xx"})

If a token is found, it will be verified against the configured Token Endpoint to confirm that it is a valid token issued for your server's configured homepage with a sufficient scope.

For more information on how to install, configure, and use Flask-IndieAuth, please check out the README on GitHub.

Next Steps

I'll be using this extension to build my Micropub media endpoint (coming up in a future post) and so far it is working just fine. That said, I know there is a lot of room for improvement. Some things on my list:

  • "scope" can have many values, but only "post" is supported for now. It should probably be passed as an argument to @requires_indieauth so different routes can have different requirements.
  • The configured homepage ("ME") is currently expected in the Flask app's config. I'm not sure if that's "standard".
  • "TOKEN_ENDPOINT" is currently expected in the Flask app's configuration, but since it is required to be specified in the HTTP headers for or as a <link> in the content for the homepage, this could be fetched by the server.
  • Error handling isn't great - all failure conditions currently return HTTP 400 (Bad Request) but should probably be diversified a bit.

Feedback Welcome!

This is my first published Flask extension (heck, it's my first public Python package on PyPI), and I'd really appreciate comments, questions, pull requests, etc. Feel free to reach out on GitHub, or you can find me in the #indieweb chat on freenode IRC.

HWC Baltimore 1/25 Wrap-Up

Baltimore's first Homebrew Website Club of 2017 met at the Digital Harbor Foundation Tech Center on 2017-01-25.

Notes from the "broadcast" portion of the meetup:

martymcgui.re - mf2 for deleted posts. Packaged and released his first Python package, a Flask IndieAuth lib for micropub servers, has a proof of concept micropub media server built on Flask-HashFS.

brianey.com - lots of WordPress IndieWeb plugins setup on his site. Has IndieAuth working. Thinks micropub is working. Also integrating these into humor/fake-advice site imnotwrong.com, POSSE to Medium. Discovered that people still use StumbleUpon and got some good traffic from there.

jeancedre.com - wrote down list of things to do to refresh portfolio site. Chose new color scheme and brought it into Sketch to start designing. New website will mean new logo, layout, etc., and eventually business cards based on that. Not sure if wants to use WordPress "because it's overkill". Discussed how he wants to "use" the site, as the author, since WP provides a nice CMS that supports lots of workflows.

jonathanprozzi.net - did lots of refactoring of his Hugo theme into logical partials. Goal is to make a Hugo theme that supports IndieWeb via mf2 out of the box. Has also started making an ongoing list of all the changes he has been making, or wants to make, on his site.

We discussed the renewed IndieWeb interest in automatically archiving our posts and links to the Internet Archive, prompted by the content deletions and Twitter censoring of the new U.S. gov't administration. We also discussed the upcoming CryptoParty Baltimore happening in a little over a week on Feb 4th.

Left-to-right: brianey.com, jonathanprozzi.net, jeancedre.com, martymcgui.re

We hope you'll join us for the next HWC Baltimore meetups: Feb 8th and March 22nd!

Photo for tonight’s Homebrew Website Club Baltimore.

Replied to https://aaronparecki.com/2016/12/21/7/100days
post from
Currently debating between #100DaysOfMusic or #100DaysOfIndieWeb for my #100Days project. #100DaysOfMusic - The goal would be to write a short 10-20 second song every day. The goal would be to write something that's "finished" enough to be able to use it as a podcast or video intro song, so it doesn't have to be long, but has to sound decent. I want to get back into writing music, since I've only done a tiny bit over the last couple years, and it helps to have a more concrete goal. The only w...

This sounds like a really great challenge either way! I am rooting for #100DaysOfIndieWeb because I learn so much about #IndieWeb from your stuff.

Great post from @aaronpk about his #IndieWeb setup. I should make one of these!

https://aaronparecki.com/2016/12/12/9/my-website

post from
A Brief Intro to My Website Architecture

Great writeup by http://jonathanprozzi.net/ about the positive effects of setting aside even an hour a month to learn and work on new things.

http://jonathanprozzi.net/2016/12/homebrew-website-club-reflections/

post from
Homebrew Website Club: Reflections
Replied to https://indieweb.org/2017-01-01-commitments

My 2017-01-01 #IndieWeb commitment is to improve the way I handle files and images to speed up both posting and pageloads for my site.

Self-Hosting kylewm's Woodwind Indie Reader

One of my favorite aspects of the IndieWeb community is that when you get things "right" with your website, you often get a bunch of fun interoperability with other IndieWeb-compatible websites "for free". For example, the Micropub standard lets you use lots of different clients to post to your own site, and the Webmention standard lets sites notify one another of things like comments, event RSVPs, etc.

Fundamental to having these technologies work well together is microformats2 (mf2), a lightweight way of marking up "structural information" in HTML so that a machine can make (some) sense of the information, such as the name, url, and photo of the author, hints on the important pieces of content in a page, etc.

Getting these things "right" on my own website led me to look for a "Reader" that would make use of the mf2 data and attempt to display it in a meaningful way.

One of the popular readers I saw talked about in the #IndieWeb chat was Woodwind. It was easy to get started by logging in with my own website and then subscribing to my own site to get all my h-feeds, h-entrys, h-cards, etc. in a row. Recently, the hosted version of Woodwind at https://woodwind.xyz/ was down for a few days, so I set out to host my own.

Initial Setup

Thankfully, Woodwind is on GitHub and the Installation instructions are pretty good for getting started. Since I already had a server with the expected dependencies (Python3, PostgreSQL, and Redis), I was able to get a test site up and running in a few steps:

  1. clone the git repo
    git clone https://github.com/kylewm/woodwind.git
    cd woodwind
  2. create Python3 virtualenv and activate it
    virtualenv --python=/usr/bin/python3 venv
    source venv/bin/activate
  3. install the required Python libraries with pip
    sudo apt-get install python3-dev
    pip install -r requirements.txt
  4. as the postgres user, create the woodwind database and the database user that would access it

    $ sudo -u postgres createdb woodwind
    $ sudo -u postgres psql woodwind
    woodwind=# create user woodwind_user with password '...'
  5. copy woodwind.cfg.template to woodwind.cfg and edit it up

    SECRET_KEY = '...' SERVER_NAME = 'woodwind.yourdomain.com' SQLALCHEMY_DATABASE_URI = 'postgres://woodwind_user:DB_PASSWORD@localhost/woodwind'

  6. run the init_db.py script
    python init_db.py
    • at this point I discovered a typo in woodwind/views.py that was throwing errors - a missing parenthesis. once fixed, this ran fine.
    • I've created a pull request for this, so kylewm can merge it back in eventually.
  7. finally, use uwsgi to run the demo version
    uwsgi woodwind-dev.ini
  8. visit localhost:3000 in my browser and I could see that woodwind was running!

This had me off to a very good start, but I wanted to be able to visit my copy of Woodwind from anywhere using a public domain name, protect my activity from eavesdroppers on the network with HTTPS, and have Woodwind up and running reliably across server crashes, reboots, etc.

Setting up Woodwind with uwsgi, Upstart, and nginx

Woodwind is an application written in Python. uwsgi is an application server that can run that code on demand, efficiently. It is possible to run uwsgi by hand as we did above, but I wanted the service to be started and managed automatically by the operating system.

I run an Ubuntu server with the upstart process manager. So, I created an upstart configuration for Woodwind at /etc/init/woodwind.conf:

description "woodwind uwsgi instance"
start on runlevel []
stop on runlevel []
respawn
setuid woodwind_user
setgid woodwind_user
chdir /home/woodwind_user/woodwind
env LC_ALL=C.UTF-8
export LC_ALL
env LANG=C.UTF-8
export LANG
script
. venv/bin/activate
uwsgi --ini woodwind.ini
end script

With this, the uwsgi server should start up on boot to serve Woodwind, and I can now manage woodwind from the command line. For example:

$ sudo start woodwind woodwind start/running, process 14104 $ status woodwind woodwind start/running, process 14104 $ sudo restart woodwind woodwind start/running, process 14246 $ sudo stop woodwind woodwind stop/waiting

Since I wanted to use HTTPS to protect my activity on Woodwind from network eavesdropping, I used Let's Encrypt and their certbot tool to create an SSL certificate for my domain. The steps are:

  1. Create a DNS entry for woodwind.yourdomain.com to point to the public IP address of my server. This may take some time to propagate and certbot won't work until it has taken effect.
  2. Install certbot
  3. Stop nginx from running, temporarily.
  4. Use certbot to issue a
    ./certbot-auto certonly --standalone \
      --standalone-supported-challenges http-01 \
      -d woodwind.yourdomain.com

This resulted in an SSL certificate and key pair that I could use to encrypt traffic to this domain.

Next up, I need something to actually handle the HTTPS requests and pass them along to uwsgi. I used nginx for this because I was already using it on this server. In my nginx config directory, I created a woodwind.conf file:

upstream woodwind {
server unix:/tmp/woodwind.sock;
}
upstream woodwind_wss {
server localhost:8077;
}
server {
listen *:80;
server_name woodwind.maktro.net;
server_tokens off;
ssl on;
ssl_certificate /etc/letsencrypt/live/woodwind.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/woodwind.yourdomain.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_dhparam /etc/ssl/certs/dhparam.pem;
root /home/woodwind_user/woodwind;
access_log /var/log/nginx/woodwind_access.log;
error_log /var/log/nginx/woodwind_error.log;
location /_updates {
uwsgi_pass woodwind_wss;
}
location / {
try_files /woodwind/static/$uri /frontend/$uri @woodwind;
}
location @woodwind {
uwsgi_pass woodwind;
include uwsgi_params;
uwsgi_buffering off;
}
}

This nginx configuration has some things worth noting:

  • In addition to running a process that answers regular HTTP requests on a unix socket at /tmp/woodwind.sock, Woodwind also runs a service that answers WebSocket traffic at localhost:8077 for nifty features like live updating the page in your browser when a feed is updated.
  • Woodwind serves some static files out of its /woodwind/static folder as well as the /frontend folder. I needed to install the dependencies in /frontend using npm:
    $ cd frontend
    $ npm install --nodev

After all this setup, I restarted nginx and was able to visit Woodwind in my browser!

I am happy with my setup so far. I am not quite sure yet if I did the WebSockets configuration correctly, but in general things seem to be working alright. I hope this information is useful to someone down the road, even if it is just future me.

Homebrew Website Club Baltimore is just two days away!

Come work on your website alongside other folks who are doing the same!

Maybe make and/or work on some #IndieWeb commitments for 2017?

https://martymcgui.re/2016/11/02/215844/

post from
Homebrew Website Club Baltimore Meetup 11/30/2016

Digital Harbor Foundation Tech Center Baltimore, MD

Excited that I can now more easily post events to my own website from quill.p3k.io. #indieweb #micropub

HWC Baltimore 9/21 Wrap-Up

Baltimore's first Homebrew Website Club met up at the Digital Harbor Foundation Tech Center on 9/21/2016. We had a nice quiet writing hour followed by some quick introductions (since we already knew one another) and lots of chatting about projects, first steps, and indieweb in general.

Notes from the "broadcast" portion of the meetup:

Marty McGuire (co-organizer)

  • Starting up HWC Baltimore
  • Made style changes to improve contrast for reading

Jonathan Prozzi (co-organizer)

  • Got Jekyll working with GitHub Pages
  • Now also able to run and compile locally
  • Now working on getting personal domain and hosting

Shawn Grimes (Executive Director of DHF)

  • Working on a tool called FabHive that manages multiple 3D printers on a network.
  • Making progress on a feature to expose underlying Octoprint UI for individual printers.

It wouldn't be an HWC without a photo, so here is our selfie!

Left to right: Jonathan, Shawn, Marty

We had a great chat and look forward to more progress on projects, more good discussion, and more interested folks at the next one. We hope you'll join us next month on 10/19!

It’s the first meeting of Homebrew Website Club Baltimore!

Quiet writing hour starts now. Come work on your website, blog post, list of hopes and dreams, etc.

Show & Tell and discussion starts at 6:30pm