Tom Scott @tomscott(twitter.com)
Maybe its wiser to use simple English specific “subjective/objective/possessive” for now as current uses are English only and mapping the entire space of gendered language for the purposes of preference stating is nonsensically complicated? Just worried about implications of programmatically determining pronouns from a gender field.

Hey @tomscott need a websavvy linguist’s opinion on best terms for indieweb pronoun markup. Have been told that the “he/him/his” pronouns should be labeled as Subject, Object and Posessive as opposed to the Nominative, Oblique, Possessive labels proposed here http://microformats.org/wiki/h-card-brainstorming and used on the pages listed here: http://indiewebcamp.com/preferred_gender_pronoun which were suggested by English-only-speaking non-linguists in an attempt to make the proposal be usable and extendable in non-english settings?

Fuck yeah! Got basic #Indieweb Salmention handling working!
https://acegiak.net/2015/06/13/i-have-to-go-to-bed-now-if-this-works-or-not-so-i-hope-it-works/
goes all the way through
https://kylewm.com/2015/06/i-have-to-go-to-bed-now-if-this-works-or-not-so-i
and shows up on
http://acegiak.net/2015/06/09/not-necessarily-threaded-comments-like-reddit-but-i-think-theres-broad-consensus-that-if-you-reply-to-a-reply-it-would-be/

You can see the changes I made to the Semantic Linkbacks Plugin for WordPress here:
https://github.com/acegiak/Semantic-Linkbacks/commit/7e1f757e74f9bb724b5ec52745209c3a378bce69

I’m aware it’s janky and incomplete but it does basically work. Any pull requests to help improve it would be greatly appreciated.

Now I think it’s time for bed.

Automatic Game Scrobbling Script

This morning I put together a python script to log which games I play on my PC and scrobble them to my blog. It’s a pretty simple system that just checks whether or not processes are running and logs run times, but I thought it was neat. The only problem I’ve found so far is that the WoW process sometimes lives on as a zombie process after the game is closed. import shelve,os,datetime from datetime import datetime from wordpress_xmlrpc import Client, WordPressPost from wordpress_xmlrpc.methods.posts import GetPosts, NewPost from wordpress_xmlrpc.methods.users import GetUserInfo from wordpress_xmlrpc.compat import xmlrpc_client from wordpress_xmlrpc.methods import media, posts import sys, getopt d = shelve.open("/home/acegiak/.scripts/gamelogstore.db", flag='c') games = {} games['The Elder Scrolls Online'] = ['eso.exe','http://www.videogamegeek.com/videogame/124451/elder-scrolls-online'] games['Minecraft'] = ['Minecraft','http://www.videogamegeek.com/videogame/81960/minecraft'] games["Don\'t Starve Together"] = ['dontstarve_steam','http://www.videogamegeek.com/videogame/170660/dont-starve-together'] games["World of Warcraft"] = ['Wow.exe','http://www.videogamegeek.com/videogame/69309/world-warcraft'] games["Civilization V"] = ['Civ5XP','http://www.videogamegeek.com/videogame/80945/civilization-v'] games["Oddworld: Abe's Oddysee: New 'N Tasty"] = ['NNT.x86','http://www.videogamegeek.com/videogame/80272/oddworld-abes-oddysee'] print datetime.now() print "checking games" for k in games: if os.system("pidof "+games[k][0]) == 256 and os.system("jps | grep "+games[k][0]): if k in d: delta = datetime.now() - d[k] seconds = delta.seconds formatted = '{:02}h{:02}m'.format(seconds // 3600, seconds % 3600 // 60, seconds % 60) print k+" ran for "+formatted del d[k] d.sync() wp = Client('http://acegiak.net/xmlrpc.php', 'USERNAME', 'PASSWORD') post = WordPressPost() post.title = "Played "+k+" for "+formatted post.custom_fields= [] mf2cite = {"url":games[k][1],"name":k,"duration":formatted} post.custom_fields.append({ 'key': 'mf2_cite', 'value': mf2cite }) post.terms_names = {"kind":["play"],"category":["scrobbles"]} post.post_status = "publish" print wp.call(NewPost(post)) print "wordpress call complete" os.system("notify-send \"Logged "+formatted+" "+k+" session to acegiak.net\"") else: print k+" is still not running" else: if k not in d: d[k] = datetime.now() print k+" is now running" else: print k+" is still running" d.sync() d.close()
Read More
tantek / Markdown(tantek.pbworks.com)
Man, this is awesome? Are you using an implementation of this anywhere?

Actually, I got curious and implemented the main bits with PHP regexes:

function markless($text){
 $u = "\w\.\:\/\\\\";
 $s = "\s\r\n\*";
 $tld = "com|org|net|co|gov|io";

 $text = preg_replace("`([\r\n]+)([^\r\n]+)[\r\n]+\={5,}([\r\n]+)`","$1<h1>$2</h1>$3",$text);
 $text = preg_replace("`([\r\n]+)([^\r\n]+)[\r\n]+\-{5,}([\r\n]+)`","$1<h2>$2</h2>$3",$text);
 $text = preg_replace("`([\r\n]+)([^\r\n]+)[\r\n]+\.{5,}([\r\n]+)`","$1<h3>$2</h3>$3",$text);

 $text = preg_replace("`[".$u."]+\.(".$tld.")[".$u."]+\.(:?png|gif|jpg|jpeg|bmp|tiff)`","<img src=\"$0\">",$text);
 $text = preg_replace("`[".$u."]+\.(".$tld.")[".$u."]+\.(mp4|mov|ogv|webm)`","<video controls autoload=\"metadata\"><source src=\"$0\" type=\"video/$2\"></video>",$text);
 $text = preg_replace("`[".$u."]+\.(".$tld.")[".$u."]+\.(mp3|wav)`","<video controls autoload=\"metadata\"><source src=\"$0\" type=\"audio/$2\"></video>",$text);
 $text = preg_replace("`([".$s."]+)([".$u."]+\.(com|org|net|co|gov|io)[".$u."]+)([".$s."]+)`","$1<a href=\"$2\">$2</a>$4",$text);
 $text = preg_replace("`[\r\n]{2,}`","</p><p>",$text);
 $text = preg_replace("`[\r\n]`","<br>",$text);
 $text = preg_replace("`\*(.*?)\*`","<strong>$1</strong>", $text);
 $text = preg_replace("`([".$s."]+)[\/\\\\](.+?)[\/\\\\]([".$s."]+)`","$1<em>$2</em>$3",$text);
 return $text;
}

On the Importance of Character Creation

I spent most of yesterday trying to find a game. Not a specific game just any game that would fit the criteria for what I was craving. I was searching for a specific experience. Half the problem is that I’ve built myself a comfortable nest from xubuntu, dockbarx, conky and kupfer and Steam on linux has convinced me that now I don’t even need to leave that for gaming. However the specificity of my desires and budget constraints did mean that the limitations of the library of linux games hampered my search. Wine and Play-On-Linux have, thankfully allowed me to broaden my search to other titles and at the moment I’m trying out Elder Scrolls Online. Why that particular choice? Partially because it apparently runs pretty well under Wine and has no ongoing subscription fee, but mostly because of it’s character creation. The experience that I’d been missing for a while is that of creating a character, statting her out, choosing skills, playing as her and developing her through advancement through her story. I realised I haven’t really played that experience since Skyrim and that experience is an important one to me. 2013’s Tomb Raider was hugely valuable because I’ve always looked up to Lara and that game made her so accessible as a real person that it does remind me that we can choose games where we identify with a static main character but creating a character from scratch and playing as them is a form of self expression. As a person who struggles with identity both at a gender level and in a broader sense playing games where I can shape my character’s image and act as them is as soothing as any other form of artistic creation. Often my own creativity operates at an abstract, intellectual, structural level, devoid of personality and narrative and I can get lost in those clouds but when I sit down to play games like Skyrim, Fallout or even WoW I can connect with the the person I’m making and being. The ability to adjust my character’s appearance with ease allows me to talk to myself about myself through that imagery. When I choose my character’s strengths and weaknesses I tell a story, saying “this is what is important to me” and that story can be different each time, but always valuable. Playing as that character validates their existence. It says “yes you can exist, have a story and be valuable in a form you create or choose” and for people who are living in circumstances where they are not afforded the luxury of being themselves, that can be the difference between someone believing that “it gets better” or choosing what looks like the only other option. My WoW character is Violace, a forsaken fire mage/engineer and she has been so important to me growing up as a symbol of my own ability to be intimidating, chaotic and feminine while finding community outside the narrative of “normal life” and I have failed to be invested in any of my other characters in that world because hers is the story that is most important to me there. But at the moment I need a new space to tell new stories about myself to myself, so it’s time to look at what games will let me tell those stories. To those of you out there designing games with deep customizable character creation, thankyou. Allowing players to shape who we play as is an important feature that allows us to craft our own stories and self-empower which can literally save lives. Additionally, I’d like to issue a challenge: So far in all my searching I’ve not found a single game that completely eschews a binary sex/gender choice for a slider or similar mechanic. Why not allow us to adjust the position of a character’s masculinity/femininity on a spectrum and choose pronouns/voices/etc from a set after that? The representation this would allow for intersex and non-binary folks would be incredibly powerful and would allow for a way more diverse range of interesting characters.
Read More
if you’re building an #indieweb reader think about what ux decisions you can make to make your reader easy and useful without being addictive and problematic. Currently I’ve found myself losing a lot of time to endlessly scrolling my WhisperFollow feed to the point where it is an issue I need to address.

Updated walkthrough of my Indieweb reader/response UX

I thought I’d do a quick update of how it looks using whisperfollow to aggregate and respond to posts from RSS/Atom and MF2 h-feed feeds. My subscriptions are managed using WordPresses blogroll. Every five minutes Whisperfollow polls a subset of these links. If they have an RSS URL defined then whisperfollow fetches the feed and adds any new items using WordPresses RSS parsing functions. If there is no RSS URL Defined then it attempts to parse the page itself as MF2 and aggregate any posts found in a h-feed there. On activation Whisperfollow creates a page on your wordpress blog called “following”. When you’re logged in and visit that page you get presented with a timeline of all the posts aggregated from your blogroll subscriptions in a single feed, most recent at the top. These are loaded through ajax using the WordPress Json API. This allows for the page to infinite scroll as you go through, though the search and page fields at the top also allow you to skip through to specific content. Each post has a reblog button at the bottom and pressing that opens the wordpress new post screen in a new popup window. One the new post screen is loaded the whisperfollow window prepopulates the title and response fields and selects the post kind and whispers post category. The post is then displayed on the blog including it’s context. A webmention is sent to the post being responded to and POSSE is sent to twitter and tumblr. If the post is originally from twitter or tumblr the response is shown as a native reblog/replytweet.
Read More

Twitter Battle

Twitter battle is a simple tool that lets you see who is winning (or at least has claimed more points for) a hashtag on twitter. It aggregates all twitter posts from a set of accounts that contain the battle hashtag and then scans them to see how many points they’re worth. Photos are expected to be attached as proof of points earned and are also displayed in the feed. I initially built it for the #battlates challenge between myself, BlackwoolHoliday, Eli Green Drums and Julia Henning which awarded 1 point per 30 mins exercise per person but I thought I might as well make it generic so it can be used for similar things later on. http://acegiak.net/ace/twittle/?hashtag=Battlates&teams=teammcallan%20teamgreenhen SOURCE
Read More
I’m currently experimenting with putting titles on my blog in my handwriting.

I’ve been curious about the idea of having a font of my handwriting in the past but been put off by the amount of work require. Recently, however, Nedroid recommended the services of yourfonts.com who will convert handwriting to a font for $10. Considering that it would have taken me hours to do it myself I went ahead and forked over my cash. The process was simple and the results were pretty good. So now I have a .ttf font of my handwriting.

To use my new font on my site I made use of onlinefontconverter.com/ to get a .woff and a .eof version of the font. I’ve also got a child theme of Sempress set up for the custom css and javascript on my site. I created a folder in my child theme’s directory called acegiakfont and put my .woff and .eof files in it and added the following code to my custom css:


@font−face {
 font−family: 'acegiak2014';
 font−style: normal;
 src: url('acegiakfont/Acegiak2014.eot');
 src: local('acegiak2014'), url('acegiakfont/Acegiak2014.eot') format('embedded−opentype'), url('acegiakfont/Acegiak2014.woff') format('woff');
}


.entry−title,#site−title{
 font−family: 'acegiak2014' , "Droid Sans", "Helvetica", "Arial", sans−serif;!important;
}

The first section defines the custom font face and the files to load for them and the second just defines which elements to use the font for.

My current Indieweb setup is built on my WordPress blog and centralized on Whisperfollow.
Whisperfollow is a plugin that aggregates posts from the links in my blogroll through either RSS or MF2 and presents them in a unified facebook/twitter/tumblr like feed.

By default the interface loads everything into one stream which it fetches in JSON with ajax calls for infinite scrolling.

Screenshot - 140914 - 22:04:12

The new interface also has a search function and a pageskip function incase you lose your place while reading or want to find something specific.

Screenshot - 140914 - 22:14:56

Posts appear with a reblog button below them. If you want to respond to a post in any way you hit this button.

Screenshot - 140914 - 22:04:55

This opens the new post window. The Kinds taxonomy and In Response To Metadata fields are added by the Indieweb Taxonomy plugin and automatically prepopulated along with the title with jquery by the parent WhisperFollow window.

Screenshot - 140914 - 22:05:49

In Kinds Reposts are for when I want the content I’m responding to to be displayed. If I like a post I select like and if I want to comment on it I select Reply. I only use Favorite when I’m manually composing a post which is on a static page about a specific topic like a Wikipedia article or an IMDB page, these are more similar to liking a page on facebook whereas the Like Kind is more like liking a post on facebook. The difference is whether or not a piece of content is time specific.

The Indieweb Taxonomy plugin always attempts to send a webmention to the response url if it has one.

Screenshot - 140914 - 22:07:00

I use a heavily modified version of the Microblog Poster plugin for wordpress to POSSE to tumblr and twitter. If the post I’m replying to originated on tumblr my modified version POSSEs my post there as a native reblog.

Screenshot - 140914 - 22:08:05

Screenshot - 140914 - 22:08:25

If I create a post with an image in it, an atlink or a hashtag these are also handled by my modified posse plugin turning the image into a shortlink, adding hashtags to the wordpress tags list (thanks to the Hashtagger plugin) and then putting those tags into the tumblr post and retrieving the relevant handler for the atlink from a json object stored in the notes section of the link details.

Screenshot - 140914 - 22:09:43

Screenshot - 140914 - 22:11:36

Screenshot - 140914 - 22:12:02

Screenshot - 140914 - 22:13:13

Addtionally the atlink plugin marks up the atlink with a link to the person on the actual blog post and sends a webmention to that page.

Screenshot - 140914 - 22:11:49

Last.Fm Spirit

Download Code on GitHub LastFmSpirit is a free Plugin for WordPress. It allows users to use WordPress Shortcodes to create tables and charts of data from the Last.Fm Api: http://www.last.fm/api It is written by Ashton McAllan: http://acegiak.net It is based on the LastFm library by tijsverkoyen: https://github.com/tijsverkoyen/LastFM == Usage == To use the plugin you will need to enter your Last.Fm Api Key and Secret on the LastFmSpirit options page. You can get these by registering your application here: http://www.last.fm/api/accounts Shortcodes take the form: [LastFmChart attributeName="value"]apifunction[/LastFmChart] EG: [LastFmChart user="acegiak"]user.getWeeklyTrackChart[/LastFmChart] == Installation == This section describes how to install the plugin and get it working. e.g. 1. Unzip and upload the files to the `/wp-content/plugins/LastFmSpirit/` directory 2. Activate the plugin through the ‘Plugins’ menu in WordPress 3. Enter your API Key and Secret on the LastFmSpirit Options Page. You can get these from : http://www.last.fm/api/accounts == Frequently Asked Questions == = Why does it complain about the Api Key Or Secret? = In the options page enter your API Key and Secret on the LastFmSpirit Options Page. You can get these from : http://www.last.fm/api/accounts
Read More