←February 2019April 2019→

March, 2019: 25 posts.

Adding tags to blog posts retroactively. 2019 Mar 02

I’ve been reflecting my instagram posts back to this blog for a while now. One of the conventions there is mentioning people with the @mention and hashtagging posts with #hashtags.

It has bothered me for a while that I didn’t ingest those tags and mentions in some manner. I left this lay for a long time but I’ve had a tickle in my brain to address this. So– I added tags using the wp command line tool. By the way that command line tool is incredibly useful and powerful. You can do stuff like upgrade and install plugins and themes. I have found it useful for searching over the 5882 blog posts and organizing them.

Here’s a simple search:

wp post list  --post__in=$(wp db query 'SELECT ID FROM artlungblog_posts WHERE \
post_title LIKE "%#%" AND post_status="publish" AND post_type="post"' \
--skip-column-names |  paste -s -d ',' - ) --format=csv --fields=ID,post_title > out.csv

And my code to parse that outfile.

function find_tags($str) {
    $tags = [];
    $words = explode(" ", $str);
    foreach ($words as $word) {
        if (substr($word, 0, 1) === "#") {
            $value = strtolower(str_replace([".",":","#","!","\"", "@", "(", ")"],"",$word));
            if (strlen($value) > 2) {
                $tags[] = $value;
    return implode(" ", $tags);

function find_atsigns($str) {
    $tags = [];
    $words = explode(" ", $str);
    foreach ($words as $word) {
        if (substr($word, 0, 1) === "@") {
            $value = strtolower(str_replace([".", ":", "#", "!", "\"", "@", "(", ")"],"",$word));
            if (strlen($value) > 2) {
                $tags[] = $value;
    return implode(" ", $tags);

$lines = file("out.csv");

foreach ($lines as $line) {
    $parts = explode(",", $line);
    $id = array_shift($parts);
    $title = implode($parts, ",");
    $tags = find_atsigns($title) . " " . find_tags($title);
    if ($tags) {
        echo <<<WHAT
wp post term add {$id} post_tag $tags

        echo "<br>";


On my TODO list is to do this in an automated manner. For now, it’s custom.

But it’s really nice to see the aggregate of lots of posts. It’s the basis for my robots and drawings tag pages. And now my sdcc – for San Diego Comic Con is a lot better too.

I like writing ad hoc code like this.

Invader Zim 2019 Mar 03

I had a lot of fun drawing this in black and white for Christmas last year. Part of a little Secret Santa thing. I can’t say I’m really fluent with Invader Zim but I think I did alright with it.

Again, Procreate App is great.

I posted the time lapse to Twitter:

Drawing in Starbucks, 2011 2019 Mar 13

This is fun. In 2011 I did this drawing in a Starbucks. At the time I did it in Brushes App, on an iPod Touch. I love how primitive it is. Now that I’m drawing more regularly on the iPad it’s not great, but it certainly has an appeal. I was reminded of this by the Foursquare/Swarm App, which I just hit 10 years on. Sometimes throwback posts actually do show progress and change!

See also: Sat. Sketch., “Thanks Clairemont Coffee Bean & Tea… for the wireless”, Ray at Night and Other Delights.

Do you know what Lynx is? 2019 Mar 15

Lynx is a text-based web browser, first released in 1992! In my mind there is no better window to what search engines see of your websites than running them in Lynx. Now the web is full of images and video and stunning in-page interactivity, but it’s really a text delivery system.

On the left of this image is what you see when you log into LinkedIn with Lynx. Kudos for allowing authentication to work at all! But it’s not usable. I’ve not inspected the underlying code to know why all that JSON is visible but I expect that’s source data for the single page app that runs the landing page. I trust LinkedIn knows that supporting text-only for logged in use is of marginal value considering even the lowest end smartphone can run JavaScript.

On the right is what a web crawler for a search engine would “see!” And it’s not bad at all! No errors, no accessibility issues, a minimum of duplication. At core, SEO is about whether your text is well structured and available to the web crawlers. And that screen shows the goods. Kudos again, LinkedIn.


Voicemail Spam: From (602) 529-3518 2019 Mar 15

From (602) 529-3518.

The voice seems synthetic and there’s some static:

…in your state.

It’s very time sensitive as urgent that I do hear back from you before we proceed further with the suspension of your social and assets.

Please press one to speak to the officer.

I repeat, please press one to speak to the officer right away.

Thank you.

“Old man” 2019 Mar 17

Last month I put this into my drafts on this blog:

Dude slumped in mobile wheelchair playing Old Man by Neil young and carrying 4 pack of Starbucks drinks. What’s his story?

I’ve been blogging here for a lot of years. I’m feeling the need to be more… creative.

Am I the old man? Am I like that old man? Is he like me.


“Old man, Take a look at my life.”

The years tick onward and I am neither famous nor rich. I am Happy though.

I have things I want to write. I attended open mic poetry at Verbatim Books last week. I have written poetry in my day. I have ideas that need expression. I have “bad drawing” in my twitter biography, and I know that’s not the best way to express myself, despite how much I love it.

But maybe it’s comics. Words + Pictures.

More later.

Prototyping at the Advanced Manufacturing Expo 2019 2019 Mar 17

From February 7 this year:

Very fun rough prototyping exercise at #AdvMfgExpo with @design_concepts & other attendees including @starblade68 ! Very fun #UX #industrialdesign #sketchnotes

Wonderful talk by @CeliaHodent at @Qualcomm tonight hosted by @UXSpeakeasy. My #sketchnotes here attached! 2019 Mar 17

My #sketchnotes: “Identifying & prioritizing issues w/yr #userinterface”—@arthur_ux @SDStartupWeek #sketchnote #ux 2019 Mar 17

Love @ellengustafson speaking on creating a better food culture @SanDiego_CM1 #creativemornings #inspirational #hopeful #sketchnotes 2019 Mar 17

An inspiring morning at the downtown @sdpl with @SanDiego_CM1 — speaker @jaybuys of @ThisIsVisceral talking about balancing profit and purpose. #cmsandiego #CreativeMornings #SanDiego #sketchnotes 2019 Mar 17

Final #sketchnotes on presentation on Innovation and Design Thinking Talk #PCampSd18 @ProductCampSD 2019 Mar 17

Birthday Cake March of Robots Robot 2019 Mar 20

Farewell Google+: “Save your Google+ content before March 31, 2019” 2019 Mar 20

Today in Google shutdown notices:

You’ve received this email because you have content in Google+ for your personal (consumer) account or a Google+ page you manage.

This is a reminder that on April 2, 2019 we’re shutting down consumer Google+ and will begin deleting content from consumer Google+ accounts. Photos and videos from Google+ in your Album Archive and your Google+ pages will also be deleted.

Downloading your Google+ content may take time, so get started before March 31, 2019.

No other Google products (such as Gmail, Google Photos, Google Drive, YouTube) will be shut down as part of the consumer Google+ shutdown, and the Google Account you use to sign in to these services will remain. Note that photos and videos already backed up in Google Photos will not be deleted.

For more information, see the full Google+ shutdown FAQ.

From all of us on the Google+ team, thank you for making Google+ such a special place.

Google LLC 1600 Amphitheatre Parkway, Mountain View, CA 94043

You have received this mandatory email service announcement to update you about important changes to your Google+ Page, product or account.

I requested a backup. I don’t expect it will be very big.

February 2019 ←Before After→ April 2019