Finally made a functioning Micropub action for @DraftsApp. Needs some tweaking, but I should be able to share soon.

Homebrew Website Club SF!

When: Where: Mozilla San Francisco Host: Tantek Çelik

17:30: Optional writing hour and quiet socializing
18:30: IndieWeb demos and hack night!

Homebrew Website Club retro 1980s-style logo

Topics for this week:

  • Upcoming IndieWebCamps! Nuremberg & Berlin
  • Demos of personal website breakthroughs
  • Create or update your personal web site!

Join a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!

Any questions? Ask in #indieweb Slack or IRC

More information: IndieWeb Wiki Event Page

RSVP: post an indie RSVP on your own site!

Awesome! Glad to hear that you enjoyed it 😁 the IndieWebCamps are always a good time, even remotely! Although some end up having a better remote experience than others depending on the organizers, physical space and tech available. There is one this weekend in Nuremberg, even if you can’t follow it live due to your schedule, you can always follow along with the videos on YouTube after the fact. There’s a pretty interesting group gathering there, so I expect there will be some good discussions.

Following in the IndieWeb: The Next Frontier

It’s a day late, but I’m excited to release Episode 2 of My Url Is. This week, featuring Rosemary Orchard. We had a super fun conversation about how she learned about the IndieWeb, about attending IndieWebCamps remotely and more!

Haha, yeah you’re right. Source and Target aren’t much of a spec. I think some of the stuff that makes it cross over the line as a spec is “how do you discover someone’s webmention endpoint?”, “how do you verify a webmention’s authenticity?”, etc.

Marty McGuire

HWC Baltimore 2018-10-16 Wrap-Up

Baltimore's second Homebrew Website Club of October met at the Digital Harbor Foundation Tech Center on October 16th.

Here are some notes from the "broadcast" portion of the meetup: — Worked today on a post recapping our last HWC meeting, focusing on ideas to get more people involved. For work at DHF, still learning lots of NextJS and ExpressJS. Getting back into writing content! — Been a while! Last week in Minnesota for some networking. Met some cool people and talked to some companies, including Socrata, which was part of Open Baltimore. Also got back into bullet journaling after being away for a while. Working on legal and client-finding stuff for his freelance work. — Also been awhile since he's been to an HWC! Moved all his sites to HTTPS. His podcast ( is now on iTunes, so he added that link to the site. Also tried to track down an official Overcast button but hasn't found it yet. Recently in San Jose for API World. Very little talk about building APIs and more about pitching specific products/services. Did learn a bit about microservices and case-studies of moving to them. Did some general maintenance on his WP site, and has been working on his own plugin for podcasting on WP. — Been heavily porting his site from Jekyll to Hugo. Has had some fun porting things that he did as Ruby plugins for Jekyll into crazy Go template logic, like generating permashortlinks in NewBase60. Also had some fun setting up a new CSS Grid display for photos in posts with lots of them (example which apparently only works in Firefox). Also, after some struggling with his image proxy setup (because Hugo templating doesn't support HMAC signatures) is trying out Cloudinary's free tier for his image-resizing needs.

Other discussion:

  • Podcasting on WordPress is... a pain. Apple Podcasts refused to accept their feed due to http vs https issues and that was hard to track down.
  • Ferrite for audio editing on the iPad. Alec edits his podcasts there now. Some hiccups with the noise-cancelling and auto-levelling features being too-aggressive.
  • Recording setups. Blue's new Yeti Nano looks cool.
  • FF and Chrome starting to support the new dialog element. Maybe cool, maybe terrible?

Thanks to everyone who came out! We look forward to seeing you at our next meetup on Tuesday, November 13th at 7:30pm!

#HWC #IndieWeb #Baltimore #wrap-up

Code of Conduct and the IndieWebCamp Nürnberg 2018

I wanted to attend the IndieWebCamp Nuremberg this month, just as I did last year. While browsing the page for information, under "Participating" I saw a link to the "Code of Conduct" that one has to adhere to when attending the event.

There has been much talk about CoCs in the last years, and I generally try to ignore such things as much as possible, just like CLAs and NDAs. But now it was that I should forced to follow one, and asked some questions about it in IRC.

Levels of rules

My understanding of rules in societies is that there are two levels:

  1. Law
  2. Common sense / good sense

If you break the law, police will come and arrest or fine you.

If you do not follow good sense, people will yell at and/or avoid you.

So, why do we need a third level? A "Code of Conduct", which also could be called "house rules"?

If you add a Code of Conduct, you think that level 1 (law) does not help and level 2 (good sense) is not available/adhered to.


In the IRC discussion, Rosemary Orchard gave a couple of reasons for a CoC:

  1. People feel safer if some rules are written down
  2. People know that somebody will care when they have a problem
  3. It is easier to ban people based on written rules
  4. At international communities/conferences, common sense is not actually "common" because of different backgrounds.


People feel safe

Reason 1, "people feel safe", follows the same reasoning that states follow when flooding public spaces with video surveillance.

But just feeling safe does not actually make you safe. Video cameras do not make your life more safe, neither does a Code of Conduct.

Somebody will care

I'd have put this under "good sense", but that's obviously not enough.

Banning people is easier

The premise is that banning someone based on some written text is easier than referring to some nebulous common sense.

I did realize that in the end, every Code of Conduct only exists to achieve one goal: Make it easy to ban people from some space, be it an online community or a conference.

Common sense is not common

This seems to be an easy argument: Because of diverse social backgrounds, members of an international community cannot assume that other members share the same common and good sense.

If you follow this reasoning, then the rules written down in a Code of Conduct have to be very clear, so that people with different backgrounds can understand them without ambiguities.

And this is where it all breaks: Instead of clear and unequivocal rules, the IndieWebCamp Code of Conduct (and probably all others, too) is full of soft words that can be bent in every direction:

Respectful behavior

  • Be considerate, kind, constructive, and helpful.
  • Avoid demeaning, discriminatory, harassing, hateful, or physically threatening behavior, speech, and imagery.

If the organizers determine that an event participant is behaving disrespectfully, the organizers may take any action they deem appropriate, up to and including expulsion and exclusion from the event without warning or refund.

So what actually is "demeaning"? It's a very soft word that has no singular definition, and will mean totally different things depending on your background.

The same applies to "discriminatory" and "harassing". Almost every joke discriminates some group, be it guests in a restaurant (German: Ober-Witze), types of animals or groups of people that are on the losing side of a joke.

The Wikipedia definition of harassment refers to common sense, which we can't rely on because of reason #4:

It is commonly understood as behavior that [...] embarrasses a person

IndieWebCamps have hacking days where people code together. Now when I point out some stupid bug in someone else's code, this might embarrass the person who wrote it.

This already covers the Code of Conduct's definition of "disrespectfully", and bam, I'm kicked from the conference.

Together with reason #2 ("somebody will care") this will eventually lead to overreaction: When someone complains based on the CoC, the organizers will know that people expect them to do something, because they themselves put their conference under the Code of Conduct. Common sense will be less likely to be applied in such situations.


A Code of Conduct is a set of rules to ban people.

It is needed because people have so diverse backgrounds that no common sense exists.

People with different backgrounds understand the rules differently, because they are soft instead of explicit.

I will not attend the IndieWebCamp this year.

I don’t know that you would want to use an external contact database, but two thoughts:

First, I’m hoping to add support for Micropub endpoints that support it so that Indigenous for iOS has the ability to “save an h-card” from a website you are on into your own nicknames cache.

Second, once you can easily save people’s h-cards into your nicknames cache, you can do like Aaron does and convert mentions to silo-specific mentions!

Well the good news is because Webmention is data agnostic, while I agree microformats can be tricky, if a better solution pops up in the real world, we can easily shift to adopt it. As you said, we shouldnt go out and “try to invent a new spec” but if something makes sense and people try it out and it works, then webmention can always adjust. The webmention spec would never need to change, websites would just have to replace mf2 parsers with whatever the new parsing strategy is.

Tantalising pursuit of webmentions

Over the past few days I have again picked up the torch of fully implementing webmentions in Grav. It's a maddening pursuit, mostly because I don't really know what I'm doing (although I am getting fantastic help from the folks in the IndieWeb community). The details are pretty arcane, and although I am trying to keep a decent record of all the steps and missteps, a full write-up will have to wait. In the meantime, I'm up against all sorts of weird things that I don't fully understand. My main aim is to try and get a more consistent, more essential, set of data back about webmentions to this site. To do that, I need to persuade the plugin to use XRay, rather than the standard PHP microformat parser, which I started doing back in late May.

More this way ...

I will be giving a session at @drupalcampbe about #indieweb ! A gentle 101 intro about the mission, specs and what the #drupal module already supports. Spoiler: a lot!

New release for Indigenous includes saving notes, articles and replies as draft so you can publish them later! #indieweb
Want to update posts in your #drupal site with Indigenous ? Who doesn't ! :) The android client and #indieweb module has experimental support now for querying posts and then updating a single post.

The #Drupal #IndieWeb module is now able to send micropub requests to Aperture on incoming Webmentions to my site, which allows me to create a 'Notifications' channel. One step closer to killing the Twitter client!

Indigenous is now publicly available on Google Play. Post easily to your site, or keep up with friends and interesting sites. More features coming soon, as well as to the #drupal module! #indieweb #social Google Play Store

This might be a handy #indieweb #WordPres plugin for folks using to custom tailor a feed
Just published a writeup of the @MySlingStudio rig I'm bringing to film IndieWebCamp Nürnberg and Berlin! It has 3 cameras, plus an HDMI input for presenter's slides, wireless mics, and still all fits into a backpack!

Portable Wireless Live Video Rig

I've been looking for ways to slim down the amount of equipment I need to bring to record conferences talks, both to make it easier to travel to other cities, as well as to speed up the setup time during an event.

This post outlines my current favorite set of hardware for recording and livestreaming conference talks and meetups. I'm able to fit all of this into a backpack and carry it on my bicycle to local events, or take it on planes to events in another country.


Video Switcher

The SlingStudio system has been a total game changer, packing an unbelievable amount of power into a tiny box.


At the core of the system is the SlingStudio Hub. This is the brains of the operation: a video switcher, encoder, and recorder. This device broadcasts its own wifi hotspot, which you can then connect your cameras and controllers to. You can use any HDMI camera as a video source by using a CameraLink to wirelessly connect the HDMI device, or you can use any iOS or Android device as a camera as well. This provides a great opportunity to have a super compact rig, since iPhone cameras are actually pretty good now.

For small productions, I will bring one iPhone camera, and one camcorder connected via HDMI. The iPhone provides a good enough picture for a wide shot of the room, and the camcorder provides good optical zoom and low light capability for a close-up of the presenter.

The rear of the device provides a few ports, most importantly an HDMI input and audio input, which means you have a built-in way to grab the slides from the presenter as well as a good audio feed.


I usually plug in an HDMI 1x2 splitter into the input, so that I can send the presenter's computer to the house projector as well as this device. This makes the computer show up as a camera angle in the switcher. The hub can accept a huge variety of HDMI resolutions as the input and it handles scaling itself. I haven't yet found a computer that this device couldn't handle.

Switcher Controller

The Hub is controlled via an iPad or Mac app. I usually use an iPad since it's nice having a dedicated device with a touch screen for this, plus it's easier to walk around with the iPad.


You start by connecting the iPad to the Hub's wifi hotspot that it broadcasts, then when you launch the SlingStudio Console app, it will connect to the Hub and provide you with a controller interface to see all the camera angles and switch between them.


Since my goal is to have this pack up entirely in a backpack, I wanted to find the smallest options for cameras, even if it comes somewhat at the expense of quality. I typically use one or two iPhone SEs ($100 used), and a Canon Vixia HF R500 ($200). (The R500s are discontinued, replaced by the Canon Vixia HF R800, which is only a minor upgrade).



I use the Canon for a close-up shot of the presenter, since it has optical zoom and is pretty good at low light. The camera itself doesn't weigh much, so it can fit on a small tripod. I use a short tripod with a monopod extension, which has the benefit of having a pretty small footprint. This wouldn't hold up a DSLR when fully extended, but handles the Canon just fine.

The Canon camera also has an audio input, so I can connect a wireless microphone receiver to this such as the super compact Sony ECMAW4 Bluetooth microphone.


The Canon provides a mini HDMI output, which connects to the micro HDMI input on the SlingStudio CameraLink transmitter. The CameraLink connects wirelessly to the Hub, so I can place the camera wherever. The battery in the CameraLink lasts a couple hours, long enough that I don't need to worry about it for a short talk, but if I'm going to be filming for a whole evening I'll make sure to connect it to micro USB power or at least an external battery pack.

Wide/Rear View


With one good close-up view of the presenter, I just need a wide view as a secondary or fallback camera angle. I usually place this camera in the back of the room so that the audience as well as the projector are visible. Since I have both a close-up of the presenter as well as their slides brought in directly, I can get away with using an iPhone as this camera angle despite its slightly reduced quality.

The iPhone SE has a pretty decent camera. It's the same cameras as in the iPhone 6s line, but you can get a used iPhone SE for about $100 now, making this the cheapest way to get another camera angle into the mix.

To use the iPhone as a camera, you first connect the iPhone to the Hub's wifi hotspot that it broadcasts. Then you launch the SlingStudio Capture app and it will instantly show up as a camera angle in the Hub. You can long-press on the iPhone screen to lock the focus and exposure as well, which is useful when your presenters have slides that switch between white and black backgrounds, which would otherwise confuse the auto-focus and auto-exposure that the phone does.

Running the camera and wifi on the iPhones the whole event would drain the battery in about a half hour, so I always make sure to plug in the phone during the event. The stock charger cable is usually too short to do anything with, so I bring a 10' lightning cable which gives me enough length to run it to a power outlet somewhere nearby.


Audio is of course a huge part of getting a good quality recording of a presentation. The camera mics built in to camcorders or the iPhone will not get good results at all, since they aren't that good to begin with plus the devices will be typically 10+ feet from the presenter. Instead, you need a microphone super close to the presenter, like a lav mic or handheld mic.

Depending on the situation, I have a few different setups I use for capturing audio. If the venue is providing amplification for the presenter, then I first try to find a way to tap into the house audio. The Hub has an 1/8" input, so I just need to make sure to place the Hub close enough to the house mixing board to run an audio cable to it.

If I need to bring my own microphones and audio gear, or if I'm recording a discussion around a table, then I'll bring either a wireless mic or wired stage or boundary microphones.

Wireless Microphones


The smallest wireless mic I've found is the Sony ECMAW4 Bluetooth microphone. The transmitter and receiver are both the same shape, both only slightly larger than the AAA battery that powers them. It's relatively inexpensive too, at $150. There is a microphone built in, but it also has an 1/8" jack to connect a lav mic. You definitely get better audio using a lav mic, so if you can manage asking the presenters to wear that I highly recommend it.

You can connect the receiver to either the SlingStudio Hub or the Canon camera using a 1/8" cable.

Tabletop Microphone



If you need to capture audio around a whole table, or if you can't get your presenters to wear a microphone, then the best option is to place a boundary microphone on the podium.

Audio Technica makes a fantastic wireless mic system that runs on 2.4ghz rather than a dedicated wireless mic frequency. There are some new FCC regulations coming that will re-allocate the frequencies that many wireless mics use, so it will no longer be legal to operate many of those. This system uses 2.4ghz, the same frequencies that Bluetooth and Wi-Fi use, so will always be safe to use.

The benefit of using a wireless mic for this, of course, is you don't need to worry about placing the Hub nearby the stage or podium. This also cuts down on the amount of wires you need to bring, which can save a lot of packing space.

Wired Microphones

For one reason or another, you may find it better to use a wired microphone. A wired microphone will usually provide better audio quality and be more stable than wireless mics, though it does come at the cost of more wires to carry and more setup time to connect them.


The Saramonic SmartRig+ 2-Channel Mixer is a small mixer that provides phantom power so you can use nice microphones with it. It plugs into the 1/8" jack on the SlingStudio hub. It does run on a 9V battery with no external power option, although I haven't been able to drain the battery during a normal one-day event yet.

I have two microphones I usually use depending on the situation.

  • Shure Boundary Condenser Microphone - This microphone will pick up everyone sitting around a table. You can also set it on a podium to not worry about your presenters fiddling with microphones. If you have a really large room, connect two of these to the mixer.
  • Shure SM58 - The Shure SM58 is a long-time standard in stage microphones. It works best when the speaker is a few inches away from the mic, and it does an amazing job of isolating sounds to avoid background noise. You'll need to either ask your presenters to hold the microphone, or give them a stand that places the mic close to their mouth.


Once all the audio and video sources are connected to the hub, you can press record and everything gets recorded as both the mixed track as well as individually. If you make a mistake while live cutting between camera angles, you can always recover by grabbing the original footage from the camera angle you need.

The other amazing thing is the SlingStudio Hub also has built-in streaming capabilities. It can connect to the venue's wifi, and then connect to Facebook or YouTube to broadcast a livestream. This makes it super easy to both stream an event live, while also recording the raw video for later editing.

There's not much more to say other than that, pretty much you just connect to a wifi hotspot and press stream. I've had good luck even streaming from an iPhone's wifi hotspot. You can choose the bitrate to stream at, anything from 2-5 mbps will give you a good result.

I'm super impressed that this device lets me pack so much into a single package instead of using separate devices for each. This all fits into a backpack, along with my computer and other electronics I normally bring.

Published Videos

Here are some videos I've produced with this rig so you can see the final results!

Week Notes #41

A regular week, though less productive than needed.

  • Had a first long board meeting of Open Nederland, the Dutch Creative Commons chapter
  • Visited the Partos Innovation Festival as a jury member
  • Explored micropub’s protocol, and the Tiny Tiny RSS data structure, in prep for next week’s IndieWebCamp Neuremberg
  • Worked on our open data project for a province
  • Did some revisions for a report on the impact of open data