Yes:
Yes:
Yes:
Yes:
Yes:
<p>Seeing Mike Birbiglia's Thank God for Jokes!</p>
<p style="text-align: center"> <a data-footer=""What's special about those characters? Oh... Oh god."" data-title="CVS Caremark password shaming" href="https://kylewm.com/file/d15b77ef41156a9124cf64e3945f1573/special-characters.png"><img class="u-photo" src="https://kylewm.com/file/73c97290c404a2cdec3da713d86e3f69/thumb.png"/></a> </p> <p>"What's special about those characters? Oh... Oh god."</p>
<p style="text-align: center"> <a data-footer="#unemployed #gymrat" data-title="Dang my phone decided I work at my gym" href="https://kylewm.com/file/2b297ce68814ffe7c42fb2fadf00f689/Screenshot_2016-03-26-22-11-01.png"><img class="u-photo" src="https://kylewm.com/file/fa72b7aaf8e0f3dfc6b5cc606f25305c/thumb.png"/></a> </p> <p><a class="p-category" href="https://kylewm.com/tag/unemployed" rel="tag">#unemployed</a> <a class="p-category" href="https://kylewm.com/tag/gymrat" rel="tag">#gymrat</a></p>
<p>Officer Bobby reporting for jury duty</p>
Yes:
<p style="text-align: center"> <a data-footer="You'd be forgiven for thinking these cats might not hate each other with the fiery passion of a thousand suns. #Owlish #Joonafish" data-title="Frandz?" href="https://kylewm.com/file/9bb8691f24e29f9f9c9409e4ceef650a/frandz.jpg"><img class="u-photo" src="https://kylewm.com/file/8e821721323bba9c50201b5b15010a12/thumb.jpg"/></a> </p> <p>You'd be forgiven for thinking these cats might not hate each other with the fiery passion of a thousand suns. <a class="p-category" href="https://kylewm.com/tag/Owlish" rel="tag">#Owlish</a> <a class="p-category" href="https://kylewm.com/tag/Joonafish" rel="tag">#Joonafish</a></p>
(Please forgive my tongue-in-cheek tone, I guess I’m in a weird mood this morning.)
I want to argue that, in its current incarnation, \Idno\Entities\ActivityStreamsPost is wholly redundant, and makes every interaction that involves it significantly more complicated.
The most egregious example is rendering a feed. Currently we do these lookups to render any feed:
If there were no ActivityStreamsPost intermediaries, this whole thing would be done with 1 DB query (the first one), rather than 1 + 2N queries. Just generally they make the code harder to read and modify (e.g. do you know off the top of your head whether /status/edit/[id] refers to the id of the Status or its ActivityStreamsPost id? I don’t!). This bit of the export code demonstrates just how redundant they are, and how easy they would be to exorcise.
All that said, and even though I am ostensibly a microformats partisan: I honestly like activitystreams’s Subject-Verb-Predicate model. In the Known-as-a-reader sense, it could be useful to have activities like “Alice posted an essay” or “Bob liked Alice’s essay” that refer to the same Predicate, but actually represent different actions. I’m sure this was the intention originally, and I think it is a good intention and a good design. But that is not what is there at the moment — instead we’d have: “Alice posted this essay” “Bob posted this like of Alice’s essay”, “Carl posted this post that is a reply to Alice’s essay” — i.e. the ActivityStreamsPost is a wrapper around the post that adds no information or context. The actual Verb is implied inside the object itself, by the presence of a likeof or inreplyto property. It’s a weird mix of ActivityStreams and the IndieWeb model.
So that’s all a long way of saying, I think we should get rid of it. Or make it something meaningful and useful.
Thoughts?
Originally posted to the known-dev mailing list
<p style="text-align: center"> <a data-footer="#Owl" data-title="Looks comfy" href="https://kylewm.com/file/8ef301d68228bfd44cc8ecd6d04717bc/comfy.jpg"><img class="u-photo" src="https://kylewm.com/file/d562b933244a4a227f4df06107ac3c1c/thumb.jpg"/></a> </p> <p><a class="p-category" href="https://kylewm.com/tag/Owl" rel="tag">#Owl</a></p>
<p><a class="p-category" href="https://kylewm.com/tag/bagels" rel="tag">#bagels</a></p>
<p style="text-align: center"> <a data-footer="The cats are sharing the condo. June is that bump on the left" data-title="Goal achieved, sort of" href="https://kylewm.com/file/ea32f5acfe4260bc52feb4eab10ba3ea/IMG_20160202_150153565.jpg"><img class="u-photo" src="https://kylewm.com/file/03c171ba4bf3ba76148dd92ce9b96e28/thumb.jpg"/></a> </p> <p>The cats are sharing the condo. June is that bump on the left</p>
when you find out Bad Horse is actually a horse
<p style="text-align: center"> <a data-footer="from https://indiewebcamp.com/Micropub-brainstorming#Discovering_Supported_Syndication_Targets" data-title='Cleaned them up a bit with "syndicate-to-expanded"' href="https://kylewm.com/file/07211beb510225f7b9c5c2296c362d88/Screenshot+from+2016-01-30+14-01-16.png"><img class="u-photo" src="https://kylewm.com/file/07211beb510225f7b9c5c2296c362d88/Screenshot+from+2016-01-30+14-01-16.png"/></a> </p> <p>from <a href="https://indiewebcamp.com/Micropub-brainstorming#Discovering_Supported_Syndication_Targets">https:/<wbr></wbr>/<wbr></wbr>indiewebcamp.com/<wbr></wbr>Micropub-brainstorming#Discovering_Supported_Syndication_Targets</a></p>
<p style="text-align: center"> <a data-footer="I need to figure out some way to get the name of the service and the name of the user." data-title="Woodwind syndication targets are a mess right now" href="https://kylewm.com/file/7ad0029e59007a85512fc72011989776/Screenshot+from+2016-01-30+10-26-44.png"><img class="u-photo" src="https://kylewm.com/file/7ad0029e59007a85512fc72011989776/Screenshot+from+2016-01-30+10-26-44.png"/></a> </p> <p>I need to figure out some way to get the name of the service and the name of the user.</p>
Anybody who’s been watching my GitHub activity for the last couple of weeks (i.e.
Ryan Barrett) will probably not be surprised by this, but I’ve migrated my website to Known! I spun the parts of my homegrown software (Red Wind) that I was happiest with into separate libraries and services (mf2util, flask-micropub, brevity, silo.pub, and Woodwind), but haven’t had the energy for polishing or adding new features in ages. Contributing bits and pieces to Known has been exactly the opposite — it’s way more fun collaborating with a group and knowing that my changes might be used by lots of people.
Honestly, I’m a little worried indieweb folks will be disappointed in me. Red Wind is not a great product nor a beautiful piece of software, but it is a fully independent implementation of some of the indieweb protocols, and it is a bummer to lose that bit of diversity. And plus now I have to go update a million references on the wiki :(
But that said, I’m happy with the decision and only wish I had done it sooner. I really enjoy using Known and writing code for it, and I think there’s a lot I can bring to its development community.
Vegetarians are people who love their pets so much they don’t even want to eat them.
Running AndroidStudio with sudo works fine, but without, it just fails silently:
kmahan@lemur:~$ android-studio/bin/studio.sh kmahan@lemur:~$
Through trial and error, I found that removing the config option -Didea.path.selector=AndroidStudio1.5 from the java command in studio.sh works around the issue… No clue why. So that it still chooses the same config directory, I replaced that option with -Didea.system.path=/home/kmahan/.AndroidStudio1.5 which specifies the full path instead of the selector.
So now the entire command at the end of studio.sh is:
LD_LIBRARY_PATH="$IDE_BIN_HOME:$LD_LIBRARY_PATH" "$JDK/bin/java" \ $AGENT \ "-Xbootclasspath/a:$IDE_HOME/lib/boot.jar" \ -classpath "$CLASSPATH" \ $VM_OPTIONS "-Djb.vmOptionsFile=$VM_OPTIONS_FILES_USED" \ "-XX:ErrorFile=$HOME/java_error_in_STUDIO_%p.log" \ -Djb.restart.code=88 -Didea.system.path=/home/kmahan/.AndroidStudio1.5 \ $IDE_PROPERTIES_PROPERTY \ $IDE_JVM_ARGS \ $REQUIRED_JVM_ARGS \ $MAIN_CLASS_NAME \ "$@"
and now it starts up just fine

I went into this week with a goal of outsourcing all my POSSE syndication to Bridgy Publish; I’ve put a bit of work into it lately, mainly adding support for publishing to Flickr and was feeling like it was well past time to start dogfooding it.
But this week’s conversations with
Ryan Barrett et al about the purpose and breadth of Bridgy Publish changed my mind. I cannot both experiment with new idioms and techniques for POSSE and use a service that very intentionally (and rightly) only adopts those things once they are well-established.
So I started thinking we should build a service one level of user-friendliness down from Bridgy, and one level of developer-friendliness up. It would present developers with a uniform API but publish to a bunch of different social web sites, and then CMSes could syndicate content for each service via this API. Where Bridgy Publish takes one input and tries to render something sane to a bunch of different silos, here you or your CMS would craft a different version for each silo.
And then I realized the API already exists and I already built the service! With one slightly hacky workaround, silo.pub fits the bill pretty nicely. Borrowing heavily from Bridgy and Red Wind, I added support for Flickr and Facebook today (though I’m waiting on Facebook’s approval before anyone else can use it … right now it will return a permissions error when you try to post). Pretty soon I plan to remove most of the silo-specific code from Red Wind and proxy it all through silo.pub.
Aside mostly for
Aaron Parecki’s benefit: I’d like to make silo.pub the model of a good OAuth 2 citizen… Which I think means learning more about expirys and refresh tokens.
I’m polling myself to see what my itches are for my site, and privacy’s the big one right now … probably because impending life-circumstance-changes make me a little wary about having every nail clipping show up in Google search results. Turning on OwnYourResponses recently is partly to blame too. Previously every once in a while I’d have a joke that was too dumb to put on my site, so I’d just tweet it. But now there is no in-between! I want those Tweets archived, but not necessarily popping up at the top of my home page :)
It feels timely. We’ve explored the Twitter model pretty exhaustively. I’m curious to look at the LiveJournal model!
Ideally I’d like to let friends log in to my personal site to see stuff. For anyone to actually do it, this would need to be as painless as possible, at minimum accepting indieauth, email, Twitter, and Facebook identities. Initial login would send a “friend request” that I’d approve manually (bonus points if it figures out that we are friends on that silo and automatically sets their permissions that way). Also if someone logs in with multiple identities, it would be nice to have some mechanism to consolidate them. “You just logged in with Facebook, but you were already logged in as …, would you like to combine these?”
Supporting webmention is taking on a significantly lower priority in my mind, partly because it’s daunting to implement.
In reply to .
This is an experiment in summarizing the events of the previous week
IndieWebCamp Düsseldorf last weekend was a great success, with more than 30 participants coming from all over the world! The event spurred some cool new tools and a bunch of great blog posts. Aaron Parecki introduced an awesome new interface for writing long-form articles, built in to his micropub client, Quill. Now any site that supports posting via micropub can use a beautiful Medium-inspired editor to write posts. Many of the hack day projects involved adding webmention support to a bunch of different platforms — Jekyll, Drupal, phpADNSite, Kirby CMS, and more!
Go enthusiasts got a boost this week as Vendan, a relative newcomer to the IRC channel, has been churning out indieweb libraries left and right, including a new microformats2 parser for go.
Kevin Marks’s new mf2 parser feature called “rel-urls” was adopted by mf2py and released in version 0.2.6. “rel-urls” is a new field in the JSON output that contains detailed properties for each rel url. It’s useful for things like feed discovery and XFN.
Known released a new version, and the Bridgy team continues to grapple with Facebook’s API 2.x changes (which is proving to be a bit of a moving target).
We drove down to Santa Cruz yesterday afternoon to meet with a photographer (and check out the hotel and fail at finding a rehearsal dinner location), and he asked “Do you guys have an engagement story?”
Kind of embarrassingly, we don’t. We’d been idly discussing getting married for years and then one day decided “OK 2015 it is”. I don’t even really remember who said it (it was Kristen). I had always said I wanted to get married if only I didn’t have to have a wedding. But now that we are planning it, now that we have a venue and more importantly a caterer, and friends and family are coming from literally the four corners of the country, it’s getting pretty exciting.
I just read through this discussion about whether Gratipay should ban 8chan (h/t
Shane Becker ). Gratipay (formerly Gittip) is a social funding site like Flattr or Patreon, though it fancies itself a more new kind of economy than a payment facilitator, and 8chan is the home base for the protracted harassment campaign, Gamergate.
Chad Whitacre, the founder of Gratipay, has been on The Changelog a couple of times, and I’ve always liked most of what he has to say. Obviously I love the goal of creating sustainable — not just open source products — but open source developers. And I’m fascinated by the calculus of “how much of a pay cut would you be willing to take to do what you really want?” where in his case, he expected it to be about 20% and it turned out to be more like an 80% cut.
Surprisingly the people who were most successful users of Gratipay weren’t primarily developers but rather outspoken social activists, mainly gender and diversity advocates in tech. It was awesome because it showed there was demand (and money) for the work that they are doing that was not being otherwise compensated. And it created some weird tensions. The model (receive funding to work full time based on the generosity of those who benefit from your work) was proven for activists but not for developers, not even the developers building Gratipay itself. The discussions on HackerNews went exactly like you’d expect them to.
I cringed when Chad said “I’m not an activist, I’m not a feminist” in an interview, and I thought the rant against Shanley was super inappropriate. But I kept thinking (rationalizing) the tensions between him and activists were basically a misunderstanding; he’s this weird eccentric open-book, make mistakes publicly and apologize publicly, guy — not a typical startup founder. And that Gratipay was slow to act on harassment/safety issues because they are trying to make as many decisions as possible with public consensus.
But now Chad is making it clear that Gratipay is to be a place to fund abusive people being abusive, as long as that abuse isn’t on gratipay.com (what does that even mean?) and isn’t so many abusive people that it tarnishes the Gratipay brand. Pardon me but what the ever living fuck?
I’m sad to see this thing that I really wanted to be successful going from a supporter of activists, to hostile toward them, to actively funding their abuse. And I feel a little ashamed that it’s taken me this long to come around to what prominent feminist voices I respect have been saying for months.