Oatmeal

A digital pillow fort

SCRIPT-8 is pretty much just like PICO-8, but implemented in JavaScript instead of Lua.

Cooking in a play kitchen, wearing a chef’s hat and apron.

Sick day spent cooking.

After weeks of not having Bluetooth on my computer I finally figured out what was wrong today. The USB dongle was sitting on the floor…instead of, you know, being plugged into the back of the computer 🤦‍♂️

Link Logging

The Linux of social media”—How LiveJournal pioneered (then lost) blogging

Like many eventual household names in tech, LiveJournal started as a one-man project on a lark, driven by a techy teenager with too much time on his hands.

Many” seems like a stretch, here. I think the modern cultural myth of the boy genius starting a big Internet thing is exactly that…a myth. Like most myths there is a glimmer or incipit bit of truth at the heart of it, but a myth does not define a pattern.

Canon Is An Abyss

On poop, wizards, authorial intent, the canon, the bible, and the abyss.

Complications arise, however, when authors write what amounts to fan fiction about their own works: aftermarket pieces which extend or challenge their previous output and what was assumed, perhaps incorrectly, to be the foundation they set. For better and worse a premium is placed upon authorial intent, and a creator issuing aftermarket canon is not unlike a contractor arriving at your house with a single brick and a mandate from the city, explaining You don’t necessarily need this, but we think the place would be better if we added it.”

And later on,

All fictional canon is abyssal. The difference between canons is how deep we are encouraged to look, and by what method that encouragement is delivered. Pottermore tweets are one kind of encouragement to stare into the abyss of Harry Potter; but some works are designed as deeply abyssal. Doctor Who, soap operas, Star Wars, many long running comic series and the Dark Souls games allow their audience to become like Crowley’s magician: to sacrifice themselves to the depths of canon, become lost in the infinite void of often paradoxical possibility. These works do not unknowingly or only occasionally beckon their audience into the abyss of canon but take it as their ongoing structural mandate.

Mystery still surrounds hack of PHP PEAR website

A compromised package manager seems pretty much like a worse case scenario situation. Throwback to the recent npm bruhaha.

Privacy Is Not Dying, We’re Killing It

Why hello-there provocative title! 👋

So we say we value privacy, but we hardly understand what we mean by it. Privacy flourishes in the attention economy to the same degree that contentment flourishes in the consumer economy, which is to say not at all. Quietly and without acknowledging as much, we’ve turned the old virtue into a vice.

Privacy in the digital-age” is such an interesting concept, rife with issue for sure, but also…intriguing. It seems like, maybe, privacy is something that is a) more valuable than it used to be, b) a creative act. If we desire to interact online, we have to construct our privacy intentionally. Set it aside, tend to it.

Why Paper Maps Still Matter in the Digital Age

With the proliferation of smartphones, it’s easy to assume that the era of the paper map is over…research reveals that the paper map still thrives in the digital era, and there are distinct advantages to using print maps.

🗺

Digital interfaces are good for acquiring surface knowledge.

📱

Print maps help you acquire deep knowledge faster and more efficiently.

🏃‍♀️💨

Ultimately, I don’t think it should be a competition between physical and digital. In the future, people will continue to need both kinds of maps. Instead of arguing whether paper or digital is a better map interface, people should consider what map is the right tool for the task.

🤝

Eating lunch. Wearing hats.

Eating hats

Black and white dog resting  on a color blanket on a coach

Baba yaga ghanoush

This week I watched a heap more television than I usually do. Highlights include (and, tbh, are limited to):

  • A bunch of Adventure Time,” because sleep, FTW!
  • Netflix’s IO.” It was interesting. More of a meditation than a narrative. Not as sci-fi as I had hoped. Indie AF.
  • Watched episode 2, season 2 of Star Trek Discovery.” It was very good. Its vibe was heaps Start Trek-y. Perhaps even peak Star Trek-y! It was as heady as the best episodes of TNG, while maintaining a modern sensibility (e.g. it was wicked watchable).

Beside rotting my brain on beautiful moving images, I also got to host the first meeting for the D&D group I’ve been invited to GM! I’m wicked excited…mostly because I’m a giant dork and love tabletop roleplaying games a lot, also because it is a weird honor to be invited to GM by a group of mostly strangers.

The big” non-work related task of the week has been migrating my website off of WebFaction (grrr) and onto blot.im (HOORAY!). Blot…still wicked good.

This week we also welcomed a 12.9″ iPad Pro into our family. It is gorgeous. It replaces Tova’s 5ish year old MacBook Air. She is very proud of it and very pleased.

Now I will eat. I made Baba ghanoush. I love Baba ghanoush. Aubergine is a more fitting name than Eggplant.” What is eggy about this plant? Surely its most striking feature is its color and not its eggyness. 🍆

Here is a song called Aubergine that I think is v. good.

Playing with dough at the bakery

Basic blot blogging from the command-line

Posting to my blog is a breeze from mobile thanks to a couple shortcuts and Drafts actions I’ve put together. I wanted posting to be just as seemless from my computer, too. Here is my quick and dirty solution!

#!/usr/bin/env bash

cd "$(dirname "$0")" # Go to the script's directory

DATE=$(date +%Y-%m-%d-%H-%M)

# The paths to your blot website's draft and post directories
DRAFT_DIR=/Users/someuser/Dropbox/Apps/Blot/drafts/
POST_DIR=/Users/someuser/Dropbox/Apps/Blot/posts/

USER_INPUT="$@"

# Your editor of choice
EDITOR='emacs'

if [ -n "$USER_INPUT" ]; then

    if [ $USER_INPUT == "post" ]; then

        printf "title: \ndate: ${DATE}\ntags: " > ${POST_DIR}${DATE}.md
        $EDITOR ${POST_DIR}$DATE.md

    fi

    if [ $USER_INPUT == "draft" ]; then

        printf "title: \ndate: ${DATE}\ntags: " > ${DRAFT_DIR}${DATE}.md
        $EDITOR ${DRAFT_DIR}$DATE.md

    fi

else 

    printf '\nBlot blogging from the command-line.\n\n    draft   create a draft post\n    post    live dangerously and just post that sucker!\n\n'

fi

In the future I may expand this to support editing existing posts, too. I’ve also been toying with a way to do this without ever leaving emacs.

You all should go read my partner’s new blog post, The Life-Changing Magic of Deaccessioning? …also subscribe!

Timezones, am I right!?

…my RSS feed ought to be fixed now! 🎊

Link logging

Magnet Fingers

I have magnets implanted in my hands

A person with magnets in 2 of their fingers. Why, how, and some more.

In China, the smiley face emoji does not mean what you think it means

WeChat has its own emoji vernacular.

Children Are Using Emoji for Digital-Age Language Learning

I wanted to find out not only whether kids were texting emoji but which emoji, and why? How do they organize emoji into sequences and ideas, and how do these early ramblings shift as kids learn to read?

Skipping to the conclusion

Kids still get picture books read to them. But now that we all communicate in writing so much more often, kids also are read text messages. For a kid to get a text message written directly for them, and read directly to them, which they can reply to in some fashion, it teaches them something powerful about the written word—that it can be used to connect with people you care about.

Privacy Is Not Dying, We’re Killing It

… Privacy may not be dead but it’s morphing, and it is doing so in part because of how we habitually conduct ourselves and how our tools mediate our perception.

So we say we value privacy, but we hardly understand what we mean by it. Privacy flourishes in the attention economy to the same degree that contentment flourishes in the consumer economy, which is to say not at all. Quietly and without acknowledging as much, we’ve turned the old virtue into a vice.

Packaging as Content | Box Vox

This is a weirdly fascinating and specific blog about packaging design. Keep an eye out for the series of posts all about Polyhedral Milk Cartons.

2 sort of silly, yet useful PHP functions to get some basic info about a webpage:

<?php
// Used to get a target URL's title
function get_target_title($target_url) {
    if (!function_exists('curl_init')) {
        die('CURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $target_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36');
    $html = curl_exec($ch);
    curl_close($ch);
    $dom  = new DOMDocument;
    @$dom->loadHTML($html);
    $title = $dom->getElementsByTagName('title')->item('0')->nodeValue;
    return $title;
}
?>

Similar, but slightly different…

<?php
// Used to get a target URL's metadata, open graph, twitter, etc.
function get_target_metadata($target_url) {
    $url = $target_url;
    $tags = array();
    $tags['url'] = $url;
    $meta_tags = get_meta_tags($url);
    $tags['meta'] = $meta_tags;
    $site_html=  file_get_contents($url);
    $og_matches=null;
    preg_match_all('~<\s*meta\s+property="(og:[^"]+)"\s+content="([^"]*)~i', $site_html,$og_matches);
    $og_tags=array();
    for($i=0;$i<count($og_matches[1]);$i++) {
        $og_tags[$og_matches[1][$i]]=$og_matches[2][$i];
    }
    $tags['open graph'] = $og_tags;
    return $tags;
}
?>

After years and years of using figma, I purchased a copy of Sketch today. Boy-howdy. I made mockups of an app in about 1/3rd of the time it would have taken me using figma.

Do you follow me with a feed reader? If so, take note! The RSS feed for my website has moved. It is now https://eli.li/feed.rss. I put a redirect in place, but not all feed readers like to follow the signs. Mind the gap.

The Life-Changing Magic of Server Migrations

After a bit of procrastination, a bit of noodling, and a generous pinch of typing I’ve started to migrate from my old web host to a new one. I’m starting with my personal stuff, and will then move the client work over.

The basic guts of the set up:

  • FastMail for email, and as my DNS control interface
  • I’m using blot.im to host my primary personal website (this one, eli.li)
  • A combination of Linode and Netlify for my other hosting needs

I’m still ironing out some of the details, but am feeling pretty good about the landscape. I looked into some alternatives to FastMail, but their offering seems to be the most solid, and the DNS control stuff is preeemo. Wicked nice.

To boot, moving my website from my previous web host to blot was a breeze, and resolved the issue I was having wherein my posts weren’t making it to micro.blog. I’m back, baby!

To say I’m impressed with blot is a massive understatment. It is awesome. I don’t have anything to gripe about…nothing, however, is so perfect, and I look forward to writing a future blog post all about the migration process and my blot set up (huge shout out to @amit for all his help, as well as to David who makes and maintains blot — his support is truly next-level).

That was all a preamble, though — the primary reason for this post is to note that I think a few things are going to change around here.

The medium being the message and all…

In the past my blog was more of a link-log, filled with likes and replies. While my website still supports all that lovely IndieWeb taxonomy, I am going to post round-up style posts, aggregating a bunch of links and comments/quotes into a single post. We’ll see if I can get into it, or how it changes things.

The other big change is tags! My old website had tags, but they didn’t really do much. The human ecologist in me is excited to start inter-linking posts by way of tag. Keep a look out for more on that, too!

Finally, the bit of my new website that I am most excited about? Custom css per-post! I have a custom metadata field associated with each post. If left blank, the site defaults to my standard css file, if, however, I put in the name of a different css file, I can associate a unique css file with a specific post!

I’ve always liked the idea of a site’s content and styling being linked. Just as I work to preserve permalinks, I want to preserve what the site looked like at a certain time. I’m not going to use this feature for all posts by any means. Heck, I might not even use it very often, but I’m excited to have the option.

Rah raw ra onward!

« Present Page 3 of 165 Past »