Tweetstorms, Journalism, and Noter Live: A Modest Proposal

Tweetstorms and Journalism

Tweetstorms have been getting a horrific reputation lately. [1][2] But used properly, they can sometimes have an excellent and beneficial effect. In fact, recently I’ve seen some journalists using it for both marketing and on the spot analysis in their areas of expertise.[3] Even today Aram Zucker-Scharff, a journalism critic in his own tweetstorm [4], suggests that this UI form may have an interesting use case in relation to news outlets like CNN which make multiple changes to a news story which lives at one canonical (and often not quickly enough archived) URL, but which is unlikely to be visited multiple times:


A newsstorm-type user experience could better lay out the ebb and flow of a particular story over time and prevent the loss of data, context, and even timeframe that otherwise occurs on news websites that regularly update content on the same URL. (Though there are a few tools in the genre like Memento which could potentially be useful.)

It’s possible that tweetstorms could even be useful for world leaders who lack the focus to read full sentences formed into paragraphs, and possibly even multiple paragraphs that run long enough to comprise articles, research documents, or even books. I’m not holding my breath though.

Technical problems for tweetstorms

But the big problem with tweetstorms–even when they’re done well and without manthreading–is actually publishing them quickly, rapidly, and without letting any though process between one tweet and the next.

Noter Live–the solution!

Last week this problem just disappeared: I think Noter Live has just become the best-in-class tool for tweetstorms.

Noter Live was already the go-to tool for live tweeting at conferences, symposia, workshops, political debates, public fora, and even live cultural events like the Superbowl or the Academy Awards. But with a few simple tweaks Kevin Marks, the king of covering conferences live on Twitter, has just updated it in a way that allows one to strip off the name of the speaker so that an individual can type in their own stream of consciousness simply and easily.

But wait! It has an all-important added bonus feature in addition to the fact that it automatically creates the requisite linked string of tweets for easier continuous threaded reading on Twitter…

When you’re done with your screed, which you probably wrote in pseudo-article form anyway, you can cut it out of the Noter Live app, dump it into your blog (you remember?–that Twitter-like app you’ve got that lets you post things longer than 140 characters at a time?), and voila! The piece of writing that probably should have been a blog post anyway can easily be archived for future generations in a far more readable and useful format! And for those who’d prefer a fancier version, it can also automatically add additional markup, microformats, and even Hovercards!

Bonus tip, after you’ve saved the entire stream on your own site, why not tweet out the URL permalink to the post as the last in the series? It’ll probably be a nice tweak on the nose that those who just read through a string of 66 tweets over the span of 45 minutes were waiting for!

So the next time you’re at a conference or just in the mood to rant, remember Noter Live is waiting for you.

Aside: I really wonder how it is that Twitter hasn’t created the ability (UX/UI) to easily embed an entire tweetstorm in one click? It would be a great boon to online magazines and newspapers who more frequently cut and paste tweets from them to build articles around. Instead most sites just do an atrocious job of cutting and pasting dozens to hundreds of tweets in a long line to try to tell these stories.

References

[1]
D. Magary, “Fuck Tweetstorms,” Deadspin, 01-Dec-2016. [Online]. Available: http://deadspin.com/fuck-tweetstorms-1789486776. [Accessed: 31-Jan-2017]
[2]
A. Hope Levinson, “Men, Please Stop Manthreading,” Gizmodo, 13-Dec-2016. [Online]. Available: http://gizmodo.com/men-please-stop-manthreading-1790036387. [Accessed: 31-Jan-2017]
[3]
“Charles Ornstein on Healthcare and Trump’s #Travelban,” Twitter, 30-Jan-2017. [Online]. Available: https://twitter.com/charlesornstein/status/826264988784459777. [Accessed: 01-Feb-2017]
[4]
A. Zucker-Scharff, “Aram Zucker-Scharff on Twitter,” Twitter, 10-Feb-2017. [Online]. Available: https://twitter.com/Chronotope/status/830096151957344256. [Accessed: 10-Feb-2017]

Browser Bookmarklets and Mobile Sharing with Post Kinds Plugin for WordPress

The Post Kinds Plugin

I’ve been using David Shanske’s excellent WordPress plugin Post Kinds, which is conveniently bundled into the IndieWeb Plugin, for more than a year now. (Update: I’ve also written a fairly in-depth primer for it.)

Much like WordPress’s native post formats (standard, aside, image, quote, link, status, audio, etc.) which were introduced in v3.1, Post Kinds instead provides a better mapping of post types across a larger variety of social media types (article, bookmark, favorite, itinerary, jam, like, listen, note, photo, play, read, reply, repost, watch, and more). In addition to changing the visual layout and formatting of most posts, the plugin also importantly includes the correct microformat classes for each of these post types and this enables a lot of other fantastically important functionality for the open web.

Custom URLs for Post Kinds

One of the problems I had with using it initially was taking the extra time to cut and paste in the several pieces of additional data or fill in meta data to make a post. It was particularly painful in a mobile setting. I was thrilled when David mentioned that he’d built in some customized query parameters which could take URLs to import in much of the data as well as to set the correct post kind automatically. They came with the general format of

http://example.com/wp-admin/post-new.php?kind=bookmark&kindurl=@url

where one could replace @url with the target URL of the site to be bookmarked, for example. Replacing bookmark with the appropriate post kind name would allow one to set the flag for each post to the proper post kind automatically, and naturally one should replace example.com with the base URL for their site.

Putting this customized URL into a browser will create a new post in one’s website admin UI and Post Kinds will automatically set the URL and scrape its meta data. One can then modify any additional data or add a comment and then publish quickly and easily.

As a concrete example, I would put the following URL in my browser of choice to “like” the Post Kinds Plugin page:
http://www.boffosocko.com/wp-admin/post-new.php?kind=like&kindurl=https://wordpress.org/plugins/indieweb-post-kinds/

Browser Bookmarklets

I am a huge fan of browser bookmarklets, so for a while I’ve been meaning to create some for the post kinds I use to better automate my post process. After dragging my feet for ages, particularly because my JavaScript skills are nearly non-existent, I’ve finally gotten around to adapting the common WordPress “Press This” bookmarklet to work with Post Kinds.

Below is the modified code that can be put into a bookmarklet to allow for easily bookmarking a particular post:

javascript:(function(a,b,c,d){function e(a,c){if("undefined"!=typeof c){var d=b.createElement("input");d.name=a,d.value=c,d.type="hidden",p.appendChild(d)}}var f,g,h,i,j,k,l,m,n,o=a.encodeURIComponent,p=b.createElement("form"),q=b.getElementsByTagName("head")[0],r="_press_this_app",s=!0;if(d){if(!c.match(/^https?:/))return void(top.location.href=d);if(d+="&kindurl="+o(c),c.match(/^https:/)&&d.match(/^http:/)&&(s=!1),a.getSelection?h=a.getSelection()+"":b.getSelection?h=b.getSelection()+"":b.selection&&(h=b.selection.createRange().text||""),d+="&buster="+(new Date).getTime(),s||(b.title&&(d+="&t="+o(b.title.substr(0,256))),h&&(d+="&s="+o(h.substr(0,512)))),f=a.outerWidth||b.documentElement.clientWidth||600,g=a.outerHeight||b.documentElement.clientHeight||700,f=800>f||f>5e3?600:.7*f,g=800>g||g>3e3?700:.9*g,!s)return void a.open(d,r,"location,resizable,scrollbars,width="+f+",height="+g);(c.match(/\/\/(www|m)\.youtube\.com\/watch/)||c.match(/\/\/vimeo\.com\/(.+\/)?([\d]+)$/)||c.match(/\/\/(www\.)?dailymotion\.com\/video\/.+$/)||c.match(/\/\/soundcloud\.com\/.+$/)||c.match(/\/\/twitter\.com\/[^\/]+\/status\/[\d]+$/)||c.match(/\/\/vine\.co\/v\/[^\/]+/))&&e("_embeds[]",c),i=q.getElementsByTagName("meta")||[];for(var t=0;t<i.length&&!(t>200);t++){var u=i[t],v=u.getAttribute("name"),w=u.getAttribute("property"),x=u.getAttribute("content");x&&(v?e("_meta["+v+"]",x):w&&e("_meta["+w+"]",x))}j=q.getElementsByTagName("link")||[];for(var y=0;y<j.length&&!(y>=50);y++){var z=j[y],A=z.getAttribute("rel");("canonical"===A||"icon"===A||"shortlink"===A)&&e("_links["+A+"]",z.getAttribute("href"))}b.body.getElementsByClassName&&(k=b.body.getElementsByClassName("hfeed")[0]),k=b.getElementById("content")||k||b.body,l=k.getElementsByTagName("img")||[];for(var B=0;B<l.length&&!(B>=100);B++)n=l[B],n.src.indexOf("avatar")>-1||n.className.indexOf("avatar")>-1||n.width&&n.width<256||n.height&&n.height<128||e("_images[]",n.src);m=b.body.getElementsByTagName("iframe")||[];for(var C=0;C<m.length&&!(C>=50);C++)e("_embeds[]",m[C].src);b.title&&e("t",b.title),h&&e("s",h),p.setAttribute("method","POST"),p.setAttribute("action",d),p.setAttribute("target",r),p.setAttribute("style","display: none;"),a.open("about:blank",r,"location,resizable,scrollbars,width="+f+",height="+g),b.body.appendChild(p),p.submit()}})(window,document,top.location.href,"http:\/\/example.com\/wp-admin\/post-new.php?kind=bookmark");
Browser bookmarklets for Post Kinds

Other versions of the bookmarks can easily be made for all the other other Post Kinds by replacing the two red highlighted portions of the code sample appropriately for each one. Specifically one should exchange bookmark with the name of the kind desired (all of them should be in lowercase) and replace example.com with one’s own domain name.

For simplicity, I’m including a sample/template bookmarklet button below which can be dragged and dropped into most browser bars. Before using it, edit the JavaScript as described above and paste it into the URL box. I’m happy to help those who may have problems. I’ve included a screen capture of what all of them look like once they’re set up and configured with matching emoji added into the titles to assist in visual selection.

🔖 Bookmark

Perhaps I (or someone else enterprising) would contribute all this back into the plugin repository for Post Kinds so that these bookmarklets would be self-generated for plug and play usage within the admin interface for the plugin the way the bookmarklets are for the IndieWeb plugin’s PressThis bookmarklets, perhaps at /wp-admin/admin.php?page=kind_options.

A Post Kinds “Bookmarklet” for Mobile

For those who would like something similar to the above for use on mobile platforms (and particularly Android) I’ve written up some instructions below which allow one to use the Android app URL Forwarder to use the ubiquitous mobile “share” functionality from most pages and/or apps in a way similar to this bookmarklet functionality. (This is based in part on some work by Ryan Barrett and some work I’d written up for the Known CMS a while back.)

I’d suspect that there’s also a similar app for iOS, but I haven’t checked. If not available, URL Forwarder is open source on Github and could potentially be ported. There’s also a similar Android app called Bookmarklet Free which could be used instead of URL Forwarder.

Configuring URL Forwarder for Post Kinds

  1. Open URL Forwarder on your phone
  2. Click the “+” button to create a filter.
  3. Give the filter a name, “Bookmark” for the bookmark version. (See photo below.)
  4. Use the following entry for the “Filter URL” replacing example.com with your site’s domain name: http://EXAMPLE.com/wp-admin/post-new.php?kind=bookmark&kindurl=@url
  5. Leave the “Replaceable text” as “@url”
  6. Finish by clicking on the checkmark in the top right corner.
  7. Repeat the above for the other desired post types but replacing “bookmark” with the lower case names of those other types.

Simple right?

Creating a post via mobile

With the configuration above set up, do the following:

  1. On the mobile page one wants to bookmark, like, favorite, etc., click the ubiquitous “share this” mobile icon (or share via a pull down menu, depending on your mobile browser or other app.)
  2. Choose to share through URL Forwarder
  3. Click on the “bookmark” option just created above (or other option as necessary for the desired post type).
  4. Change/modify any meta data within your website administrative interface or add any additional thoughts and publish. (This part is the same as one would experience using the desktop bookmarklet.)

Happy posting!

I Voted 🇺🇸

I voted in the November 8th, 2016 Election! 🇺🇸

 


After having spent the weekend at IndieWebCamp Los Angeles, it somehow seems appropriate to have a “Voted post type” for the election today†. To do it I’m proposing the following microformats, an example of which can be found in the mark up of the post above. This post type is somewhat similar to both a note/status update and an RSVP post type with a soupçon of checkin.

  1. Basic markup

<div class="h-entry">
<span class="p-voted">I voted</span>
in the <a href="http://example.com/election" class="u-voted-in">November 8th, 2016 Election</a>
</div>

Possible Voted values: I voted, I didn’t vote, I was disenfranchised, I was intimidated, I was apathetic, I pathetically didn’t bother to register

  1. Send a Webmention to the election post of your municipality’s Registrar/Clerk/Records office as you would for a reply to any post.
  2. You should include author information in your Voted post so the registrar knows who voted (and then send another Webmention so the voting page gets the update).

Here’s another example with explicit author name and icon, in case your site or blog does not already provide that on the page.

<div class="h-entry">
<a class="p-author h-card" href="http://mysite.example.org">
<img alt="" src="http://mysite.example.org/icon.jpg"/>
Supercool Indiewebvoter</a>:
<span class="p-voted">I voted</span>
to <a href="http://example.com/election" class="u-voted-in">IndieWeb Election </a>
</div>

You can also use the data element to express the meaning behind the literal p-voted value while providing your own visible human readable language:

<data class="p-voted" value="I voted">I voted for the first female president today!

Finally, feel free to POSSE to multiple social media networks to encourage your friends and family to vote today.


† I’m being a bit facetious and doing this in fun. But it does invite some interesting speculation…

IndieWebCamp Los Angeles 2016 Announced for November 4-6

For the first time since 2013, when it appeared in Hollywood, IndieWebCamp is coming to Los Angeles! I’m definitely going, and I invite you to join us. For the past two years or so, I’ve been delving into the wealth of tools and resources the community has been developing. I’m excited to attend a local camp, help out in any way I can, and will help anyone who’s interested in learning more.

Join us in LA (Santa Monica) for two days of a BarCamp-style gathering of web creators building and sharing open web technologies to empower users to own their own identities & content, and advance the state of the !

The IndieWeb movement is a global community that is building an open set of principles and methods that empower people to take back ownership of their identity and data instead of relying on 3rd party websites.

At IndieWebCamp you’ll learn about ways to empower yourself to own your data, create & publish content on your own site, and only optionally syndicate to third-party silos. Along the way you’ll get a solid grounding in the history and future of Microformats, domain ownership, IndieAuth, WebMention and more!

For remote participants, tune into the live chat (tons of realtime notes!) and the video livestream (URL TBD).

General IndieWeb Principles

icon 4611.png Your content is yours
When you post something on the web, it should belong to you, not a corporation. Too many companies have gone out of business and lost all of their users’ data. By joining the IndieWeb, your content stays yours and in your control.
icon 31635.png You are better connected
Your articles and status messages can go to all services, not just one, allowing you to engage with everyone. Even replies and likes on other services can come back to your site so they’re all in one place.
icon 2003.png You are in control
You can post anything you want, in any format you want, with no one monitoring you. In addition, you share simple readable links such as example.com/ideas. These links are permanent and will always work.

 Where

Pivotal
1333 2nd Street, Suite 200
Santa Monica, CA, 90401
United States
Map

When

Friday (optional): 2016-11-04
Saturday: 2016-11-05
Sunday: 2016-11-06

RSVP

Indie Event
Eventbrite
Lanyrd
Facebook

Guest List
For more details see: IndieWebCamp LA 2016

Tentative Schedule

Day 0 Prep Night

Day 0 is an optional prep night for people that want to button up their website a little bit to get ready for the IndieWebCamp proper.
18:30 Organizer setup
19:00 Doors open
19:15 Introductions
19:30 Build session
22:00 Day 0 closed

Day 1 Discussion

Day 1 is about discussing in a BarCamp-like environment. Bring a topic you’d like to discuss or join in on topics as they are added to the board. We make the schedule together!
08:00 Organizer setup
08:30 Doors open – badges
09:15 Introductions and demos
10:00 Session scheduling
10:30 Sessions
12:00 Group photo & Lunch
13:00 Sessions on the hour
16:00 Last session
17:00 Day 1 closing session, break, meetup later for dinner

Day 2 Building

Day 2 is about making things on and for your personal site! Work with others or on your own.
09:30 Doors open – badges
10:10 Day 2 kick-off, session scheduling
10:30 Build sessions
12:00 Catered lunch
14:30 Build sessions continue
15:00 Demos
16:30 Community clean-up
17:00 Camp closed!

Sponsorship opportunities are available for those interested.

im-attending-indiewebcamp