Latest Articles

Writings on technology and more

  • On the Banks of a Shouty River

    The estimated reading time for this article is about 8 minutes.

    Slow thinking.

    I am deracinating myself from Twitter to regain my slow thinking.

    Slow thinking is that activity of cognition which strives toward a goal, but indulges in seeming off-ramps and non-sequiturs. It is a desultory journey that stubbornly refuses to be rushed. Yet, patiently following one idea and its subsequent siblings is the path to knowledge, understanding, a wider perspective, and (with luck) innovation. Another word that describes nearly the same thing is play.

    Slow thinking is the polar opposite of the hot take culture of Twitter, in which admittedly clever people race against the timeline to emit smart distillations of recent events with novel observations set off by hip snark. The thrill of jockeying against the torrent of posts is potent.

    The immediacy of interacting with sharp minds is addictive, especially so for me. Twitter is like a round-the-clock cocktail party at a virtual Algonquin club. I have commented on the posts of actors, comedians, journalists, directors, technologists, astronomers, economists, tabletop game designers, and actual literary legends. My digital bon mots have often met with the Twitter equivalent of a polite nod, but rarely more.

    But therein lies the danger.

    As Game

    Twitter is a game. It has a scoreboard in the form of a followers count. It has power-ups called Likes. It has virtual territory in the form of retweets. It has stylized combat, like an MMO: Player versus Player, teams versus teams, and a king-of-the-hill mode in which crowdsourced abuse is focused on one person. Watch with fascination and horror as your words ricochet around the world, getting recontextualized, meme-ified, subverted, inverted, and perverted. On Twitter, there is no assumption of good will. Will you be trending this hour? Will that help your career or end it? Should you start a wikipedia page about this? Too late, another hashtag has overthrown you. Sadness. Failure. You were so relevant to the zeitgeist so very recently. Shame, but you always get another life here. Ready player one.

    The cleverest way in which social media hacks the human brain is by turning the approbation of your community into a discrete integer. How many books, plays, soap operas, and movies have characters struggling to find a clear sign of their value among their peers? In the real world, trying to resolve your place in the pecking order is subjective and squishy. Twitter has solved this messy problem. Numbers do not lie. Simply compare your numbers to others and a clear ranking obtains. I have long struggled against this pernicious hack, but I fear Twitter is winning my heart and mind on this, particularly with their Analytics view. It encourages me to think about my timeline as a business which is either succeeding (the graph line is rising!) or failing (I lost how many followers this week?!).

    The only one who wins at Twitter is Twitter.

    As News

    Twitter is a source of news. In an unprecedented way, current events spread much faster on this social media platform than traditional media of newspaper (natch), radio, or television. But not all news spreads equally fast on social media. There is a kind of “mob” bias as to what is reported. Stories about cute things, celebrities, or moral transgressions are preferred over posts about science, economics, or other “niche” hobbies. Twitter alone cannot and should not replace traditional news outlets, although it is possible to follow the accounts of the Associated Press, Reuters, even your local new paper on that platform (as I do).

    Twitter is a place you can go to learn about your privilege. Think you don’t have it? If you are reading this post on device you own, congratulations. You have more household wealth that half the planet (although, if you reading this on a flip phone in the heart of an increasingly connected Africa, India, or South America, cheers! You are the future of the Internet). You have unprecedented access to knowledge and tools that can change the course of history. How are you using this thing again?

    Even before those haunting videos of systemic violence against people of color, I was aware that my life was spared certain classes of indignities, terrors, and hostilities merely based on a genetic quirk that limits melanin production in my skin. The cause of the anger in the streets is not genetic, but social, which makes this enduring, widespread pain even more baseless and futile.

    But Twitter made the systemic, relentless outrages of people of color visceral and urgent. And that is an unqualified Good Thing. For that (and the Arab Spring and the early massive protests against the Trump administration and whatever the next Massive Online Social Protest will be), Twitter should absolutely continue to be A Thing. It has been said that “God made all men, but Sam Colt made them equal.” However, I rather think social media is now the thing that gives a righteous cause of the downtrodden the channel to speak to power in an effective way.

    As Inquisitor

    Twitter is a virtual town pillory, optimized by generative antagonistic networks to drag villains into the spotlight. And when we run of the real villains, those who are merely human are tossed into the stockade instead. The Two Minute Hate will proceed on schedule. There is no time for reflection or mercy. No patience with the muddled headed who are too slow in relinquishing their quaint twentieth century prejudices. No points for those who are older and wiser now, but were filmed when they were younger and foolish. May those on future Twitter be kinder to those on current Twitter.

    Outrage. It is the rocket fuel of tweet storms. It’s a helluva drug and it induces engagement on the platform like nothing else. You had best be on the right side of the argument when the conversation comes to your timeline. Nevermind that you know that there are three sides to every story. Forget that the whole story is rarely ever known to the public or that important facts take time to discover. BAD PEOPLE HAVE BEEN DOING BAD THINGS FOR A VERY LONG TIME. WE WILL NO LONGER BE SILENT ON THEIR PERFIDY AND GAS LIGHTING.

    And I agree. There are bad people whose fame and wealth shielded them from the consequence of their actions (heck, even being a poor white male seems to be enough sometimes to do the trick). And then there are those who had said dumb, hurtful things loudly in a public place. Binning these two groups together is a mistake, even though when you squint it seems like justice to do so.

    I could be just me. I need more time to chew on stories. Even seemingly obvious ones, like the political moves of the two national political parties. Am I confident that I can correctly distinguish between a righteous dogpiling and an astroturfed one? Life is messy and I just have not done my homework as well as I could have because I have been bouncing around in a shouty river.

    As Business

    At the bottom of it all, Twitter is a business. They offer a service for authoring and publishing your micro blog. Can you download your own content? As long as Twitter decides you can. Twitter uses the explicit demographic information that you give them in your profile, along with your followers/following lists, and the content (and metadata) of your posts to create a customer profile of you to sell to advertisers. You can be forgiven for thinking that you are owed a cut of that revenue. The platform has paid you in kind with their publishing service for your content and your advertising profile. Twitter is free in the same way an office “gives” you a desk to work on. I was fine with this arrangement for 12 years until I wasn’t any longer.

    There are many right-thinking, respectful users on Twitter who have long begged for changes in the platform that curb its worst abuses. Twitter has provided some tools to help, but far from enough. Accounts of extreme reactionaries are still on the platform. Twitter’s maintains that it wants to be neutral on the content it publishes, but this is manifest nonsense. Content that hurts their advertising revenue they are happy to remove. Content that does not? Not so much.

    As Prologue

    Part of my privilege as a technologist is possessing the know-how to write my own publishing platform and having the resources to pay for hosting. To extract the best value from Twitter, I will follow choice accounts from a distance. I will directly post sparingly, instead using web mentions and syndication plumbing to turn Twitter into my distribution channel. With time, maybe I can turn this baroque mechanism that I am assembling to something others can use to rediscover their own independence.

    I absorbed a great many positive things on Twitter. I learned a lot from people who are not like me. I made a few of them laugh. But I do not believe I have repaid their lessons very well. I am no modern Walden, but maybe this is a better season for slow thinking.

    This was also posted to /en/social_media.

  • Designing Notes for my Plerd

    The estimated reading time for this article is about 4 minutes.

    Designing Notes

    Here are some design ideas for extending my fork of Plerd to implement notes.

    What are notes?

    Notes are twitter-like short posts lacking markup or titles, but may have embedded tags. Structurally, these notes should be published marked up like Indieweb Notes.

    Note tags are implemented as post tags and will be visible on the Archive view generated by Plerd.

    Notes do not support markdown. Adding structure to notes seems antithetical to their purpose. Plerd::Posts already support markdown quite well.

    Notes also do not support attribute tags, like posts. These are simple blobs of text.

    The only formatting that will be respected are spaces and new lines, since the post will be wrapped in block element styled with white-space: pre.

    URLs should also be replaced with HTML anchors. No URL shorteners are required since there is no limit on the size of notes.

    The first line of a note may be treated specially. If the line contains a valid URL preceded by a “command” string, it should generate a citation. Commands are:

     ->       [The note is a reply to the document at the given URL]
     ^        [The note approves, supports, endoreses the content of the given URL]
    

    The note is marked up using the h-entry microformat and is intended to be consumed as a web mention.

    See the Example notes at the end of this document.

    How are you going to make this a thing?

    The user should create a new directory for note posts. The default will be:

    Path::Class::File->new($config->source_directory, "notes");
    

    Which is to say, a subdirectory off of the source directory.

    The method Plerd::publish_all should scan the notes source directory for new notes. When a new note is detected, it is parsed for tags, which are recorded in a memory, just like posts.

    Also like posts, notes are written back out to the original source file with a filename that begins with a Unix epoch timestamp (with microsecond resolution? Thinkie!).

    The URI to a specific note should be something like:

    http://bloghost/note-[EPOCH].html

    Notes should have a phrase which should be the HTML anchor text. This phrase should consist of the first 5-7 words of the post. Some clever heuristic could be devised to create a pleasant phrase.

    Example link to a note

    The template code might look like:

    Check out <a href="[% note.uri %]">[% note.title ]</a>
    

    The rendered HTML might look like:

    Check out <a href="http://bloghost/note-1593786477.html">Why I like cats</a>.
    

    The attributes of the note object mirror a Post.

    Example of rendered note

    <div class="h-entry">
        <div class="e-content">Why I like cats?  Why wouldn't I? 
        <a href="http://bloghost/tags.html#tag-favorite_things">#favorite_things</a>
        </div>
    </div>
    

    Not shown in this sample are the author attribution and other metainformation, as per the h-entry microformat.

    When notes are published to HTML, tags are to be hyperlinked, in the same way posts are.

    Notes Roll

    Notes are collected into a view called Notes Roll, which is a reverse chronological view of published notes. At the bottom of this roll should be a link to the Notes Archive view.

    Because notes are expected to grow without bound, only the most recent 25 notes will be shown. All notes should be shown in a list view like the Archive view.

    Notes feed

    The most recent notes should be available as a RSS feed.

    The front page of the plerd should also so the latest notes in the sidebar.

    Architectural considerations

    Notes should be a subclass of Plerd::Model::Post and have a its own template.

    NotesRoll is a model class with its own template.

    NotesArchive is a model class with its own template.

    NotesFeed is a model class with its own template.

    Plerd::publish_all() needs to detect notes and republish affected views as needed.

    Example note 1 (unicode, tags)

    I hate Mondays. ☹️
    #mondays #rainydays
    

    Example note 2 (preserve spacing)

     Acrostics
     Simply
     Satisfy
     Humans
     Ordinarily
     Living like
    mE
    

    Example note 3 (reply-to citation)

    ->http://facebook.com/
    This garbage site is garbage.
    

    Example note 4 (like citation)

    ^https://twitter.com/
    Although it too is a garbage site, I rather prefer it to others.
    
  • My fork of Plerd is now in production on taskboy

    The estimated reading time for this article is about 1 minute.

    OK. I have figured out how to run plenv from a cron to run plerd, like this:

    PLERD_HOME=_path_to_plerd_src
    * * * * * /path/to/plerd_pub.sh
    

    Where plerd_pub.sh is:

    #!/bin/bash -l
    PLERD_HOME=/home/jjohn/src/plerd_taskboy3000
    cd $PLERD_HOME && ./bin/plerdcmd -P
    

    Clunky, I know. Worth it for me, since plenv offers crazy flexibility.

    Also, the source file name from bear isn’t going to be a problem.

  • I want to use Bear

    The estimated reading time for this article is about 1 minute.

    Bear is a fine editor on iOS that is pretty, has markdown support, Dropbox support, and enough features for me to use for blogging.

    I would like better control of the export filename, but maybe I can finesse this in code?

    Like assume the first line of the file is the title if the second line looks like an attribute? This seems like murky waters.

    Also, the triple backticks used in beer for preformatted clashes with the markdown/smartypants stuff baked into plerd. So, does this work?

    Hello, 🌐
    

    Maybe?

  • Thinking about rubrics within Plerd

    The estimated reading time for this article is about 2 minutes.

    Since I want to step back from Twitter for a while, I need a substitute. I have been thinking about expanding the concept of Now pages to be more like a personal timeline of my current thoughts. Sort of like:

      I am currently a fulltime employee of MathWorks and not looking for
      new opportunities.
    
      I am a tabletop game designer and music composer in my spare time.
    
      Here is the latest from the top of my mind:
    
      {latest post}
      {post}
      {post}
    
      Here's a link to older posts.
    

    This would enrich the typical now page, but also give it a microblogging aspect, which should help get me off twitter, while controlling my own content.

    Since I use (Plerd)[https://github.com/jmacdotorg/plerd] as the blogging engine, I could implement this in a few ways, but I lean towards adding a new header in posts called “rubric”, which is really just a subdirectory under the publication_directory.

    I then want Plerd to consider only non-rubric posts for the top-level recent posts and tags, while rubric subdirections should get a parallel web structure to the top level (e.g. recent posts, tags, etc).

    Maybe rubrics just need archive pages and a recent post thingie? Maybe rubric tags are part of the top level tag set? I am thinking this through now.

    Once again, I caught between doing my thing and building a framework.