Words

I make words
in place of thoughts
in place of feelings
in place of truth

I make words
without thought
without feeling
without truth

I make
in place of
in place of
in place of

I make
without
without
without

I
make

I
place

I
without


I
you
all of us
together
without words
(breathe)

Published
Categorized as words

Quick-Design Quotes @ VirtualCoffee

VirtualCoffee had a great Brownbag talk this morning called How to Promote Yourself to Potential Employers by Abbey Perini. I suspect it will be posted at some point because it was recorded, but there were a number of stellar quotes and I decided to quickly mock up a few of them in Inkscape (initially) and then eventually put one into Blender as well (for fun).

How to draw a circle!!! [EASY BEGINNER TUTORIAL]

a black and white circle

My Rejected 2021 !!CON Talk Application

Abstract

Everyone knows that writing code making art is easy! There are so many free resources available on the internet that becoming a programmer an artist has never been easier! In this talk I’ll demo several ways to make a todo list draw a circle! We’ll go through a variety of mediums to get you up-to-speed with new languages and frameworks mediums and methods in no time like:

  • Types of paper and surfaces
  • Overview of mediums (graphite, inks, acrylics, oils, and more!)
  • Performance Art (Dance, Theater, and Song!)
  • Digital Applications with live demo circles including:
    • Inkscape
    • Gnu Image Manipulation Program
    • Blender
    • p5.js
    • Krita
    • HTML & CSS
    • and whatever came out between this blurb and the event!

By the end of this talk you’ll be more confident than ever (and not at all overwhelmed!) by the prospect of how easy it is to become a programmer an artist in 2021!

Timeline

  • (1-2 Minute mark): The first 1-2 minutes will be spent parodying the language/syntax/and visual style of several landing pages/blogs/paid courses etc. of non-free and free “learn to code” resources. This should be light and funny – the parody will be obvious – but we’re going to take this more seriously than mere parody (i.e. how hard can it be to draw a circle? We’ll take this seriously, though still in a playful/in-character way.)
  • (3-7 Minute mark): The bulk of the presentation will literally be demonstrating a multitude of ways to “simply” draw a circle.
    • I will actually have relevant asides about perfect circles (using a drafting compass) vs. sufficient circles (freehand strategies)
    • We’ll talk about these strategies in a variety of mediums (pen, paper, ink, etc.)
    • We’ll discuss the actual effect that different physical papers may have on the resulting shape (printer paper, canvas, etc.).
    • I’ll live demo the creation of a “simple” circle in a variety of free-software tools including Inkscape, Gimp, Krita, and Blender (and more as in the abstract). I will note that I will not be showing how to install these applications on your machines.
    • I’ll also discuss how to make these actually perfect circles created by software less perfect for artistic reasons (and show how to do that in each application).
  • (8-9 Minute mark): I’ll conclude with the same platitudes about how drawing a circle is easy and how the learning resources available to you today pale in comparison to what I had when I was learning to draw a circle decades ago.
  • (9-10 Minute mark): Break the fourth wall / drop character: I have a PhD in Fine Arts and I’m working on learning coding. I’ll close by noting that coding (like drawing a circle) can both be “easy” and “hopelessly confusing” based on previous knowledge and experience, and it’s important to regularly remind ourselves of this fact when working with, encouraging, and speaking to others. I hope this will help everyone consider this more strongly moving forward.

Intended audience

  • Learning to Code: If someone is learning to code (i.e. starting out) they’ve likely come across enough material to both understand and be painfully aware of the parody I’m doing and recognize the specific challenge can exist outside of the tech space too.
  • Actively Coding / Coding Mentors / Tech Bloggers, etc.: This group will, I hope, laugh at the title, laugh at the intro, and in the middle demo section realize that what they thought was easy (drawing a circle) has much more complexity too it then they thought, and have the parody hit home in a different way that changes their approach to new learners (and also themselves as tech is always changing).
  • Others: I think this is a balanced talk for everyone of all knowledge levels. At absolute worst, people will have a primer on how to draw a circle in a multitude of ways. That’s a pretty good worst outcome.

Short Bio

Kyle R. Conway has a PhD in Fine Arts, an MA in Theater, and experience at successful startup/incubators. He is a 10+ year Linux Desktop user (by choice) and Fedora Linux contributor. He likes tea.

Singing the praises of gdu

I’m a long-term ncdu user, but I recently discovered gdu which is much faster. This isn’t to say ncdu is bad or undesirable anymore, but for most cases I’ll be replacing ncdu with gdu moving forward for the speed advances alone.

If you haven’t seen either of these tools I suggest you check them out. They’re fantastic for quickly identifying directories and files that are taking up the most space on your hard disks via the command line in a more visual way that makes it easy to both find and delete unneeded files and directories.

A sample output looking in a home directory (gdu is shown).

You can navigate into and out of sub-directories that are also calculated and use keyboard shortcuts for all relevant actions.

gdu keyboard shortcuts — accessible from the application by pressing “?”

I’ve shown gdu here because I’m newly enamored by it, but ncdu still has more features even though it is truly slower.

At any rate, these are both highly recommended applications. I’ve used them on local computers, remote computers via ssh, mounted drives locally (nfs, smb, etc) and on Linux and BSD. I’m currently using this on TrueNAS Core (FreeBSD) and TrueNAS SCALE (Linux) to generally sort out some erroneous backup strategies I tried over the years.

Bottom line: highly recommended.

The Server that might be TrueNAS Scale

What happens when you just get frustrated and buy an old server on ebay? Well… I don’t know yet because at the moment I’m checking the RAM with memtester on a System Rescue CD running off of a bootable USB drive. What I do know is that this computer has 64G of ECC RAM, 2 Intel xeon processors with a combined 24 cores, and 8 3.5″ drive bays.

It seems to have completed successfully. If you’re wondering what steps it processes through it seems to start on “stuck address” and end on “16-bit Writes”.

After generally confirming the memory was working as intended I ran a CPU stress test for an hour or so a few times. Watching all 24 cores light up in htop was thrilling.

Everything seems to be humming along just fine…

My general plan here is to consolidate other computers that were providing FreeNAS (now TrueNAS), XCP-ng, and other functions into a single unit using the now alpha―should I be scared?―TrueNAS Scale. I’m not switching because TrueNAS is lacking in general as a NAS because it’s been great. It’s just that the VM solution, bhyve, is both not what I’m familiar with and seems generally less good for the virtualization I do. Additionally, TrueNAS is based on BSD, and while BSD is great, I’m far more experienced with Linux having used it for 10 years, and Scale is:

  • Built on Debian Linux
  • Maintains ZFS for file system
  • Integrates the more familiar KVM for virtual machines
  • Adds Docker for containers

Basically, it should allow me to consolidate:

  1. My virtual machines
    • Currently running on a mix of desktop computers with KVM and a hobbled together machine running XCP-ng.
  2. My NAS
    • Currently a dedicated old desktop computer with the sides off.
  3. My Docker Containers
  4. Maybe PFSense (dare I virtualize this?)
Inside a bigger computer.

I’m have some trepidation about using the alpha TrueNAS Scale on this system that I actually intend to use for real, but I’ve also been very very interested in using this particular iteration of the Free and Open Source project TrueNAS since I heard about it sometime last year (or was it 2019?―what actually is time?).

End of post update

Since I started writing this post I’ve:

  • generally validated the hardware is working
  • added an internal SSD to directly to the SATA ports
  • installed a fresh copy of TrueNAS Scale alpha
  • Setup a single-disk pool (pool?) to test things
  • installed a docker version of Nextcloud that works well
  • created a working VM of Debian 10 Linux and accessed via included VNC
  • happily played in the shell with my known panoply of Linux terminal commands (so much less context switching!)
  • and generally explored the new web-based GUI (I’m liking it).

I’m not sure exactly when I’m going to fully fully commit to moving all of my day-to-day data over to the new machine (need to add non-test disks for non-test pools), but I suspect in the coming weeks I’ll gain an amount of trust to do so. The release notes indicate a certain stability in many of the elements independently (though when you bring things together who knows), but it looks good.

I’ll likely update here as I encounter problems or move additional items to the server.

Jenkins + Ubuntu Server: Change Default Port

Ubuntu server has a nice installation up-front that allows you to pre-select some tools and services at install you might want to have running on your new server.

If you happen to select Wekan it will default to port 8080.

If you then happen to want to install Jenkins via their Debian/Ubuntu method it will fail to fully install at the `sudo apt-get install jenkins` section due to the port 8080 already being occupied.

After running the above command you can edit port in the following file:

sudo nano /etc/default/jenkins

Edit the numbers of the identified port to something other than “8080”

# port for HTTP connector (default 8080; disable with -1)
HTTP_PORT=8090

You can see a video here: https://youtu.be/XVei-AeXLLo

python & pipenv & direnv

Install pipenv:
pip install --user pipenv

Create and enter project folder:
mkdir myproject
cd myproject


Install software for your project (while in project folder):
pipenv install django

Enter pipenv shell:
pipenv shell

(bonus points)

Install direnv:
sudo dnf install direnv

Automate entering the pipenv environment (while in project folder):
echo layout pipenv >> .envrc

Now every time you enter or exit the folder you enter the pipenv environment seamlessly. 🙂

Bonus Bonus…

Check out https://kellner.io/direnv.html for advice on how to setup the environment to display in the bash prompt.

Published
Categorized as code

marketing me

I’m a fairly good marketer because of three things:

  1. I seek the truth like a good journalist.
  2. I have a doctorate in Fine Arts (emphasis essentially in storytelling).
  3. and from an ethical perspective I want to ensure that the story I tell is true (not just technically, but perceptually).

I think it matters that the impression you create in a story actually rings true in reality, and not just in some small, narrow, legal-definitional sense. I strive for that in all the work I do because the story isn’t worth telling if it’s a lie or someone will feel had post-transaction. I’m in it for the truth and the long-term.

But the thing I hate most is marketing myself. It’s not that I’m incapable, but any reduction of a human person is inherently untrue. All human beings contain multitudes―so too do I.

However, the below tweet has reminded me of the importance of at least sharing things I’ve done more publicly.

https://twitter.com/zenaldehyde/status/1283704908869447681

It’s not that I’ve tried to hide things, but spending the past nearly decade at startup/incubators in the healthcare space and more recently a non-profit have been situations where the work I’ve done has been huge in scope, fast by necessity, and in most cases private by default.

That’s a far cry from the work I did as an artist/educator which was able to be vibrantly public (see #2510s project, for example, and the accompanying exercises). I’ve since done much other work, but I’ve neglected to organize it in a single location and in some fashion as to make it digestible for others. You’d be forgiven for not knowing about my visual art/graphic design showings at some coffee shops (because I mostly didn’t mention them), and my 3×5 project (which is probably somewhere online), and my photo manipulation project of soft squares (which I just found yesterday while cleaning up some photo files).

You probably didn’t know about a brief series I did on the negative space between bicycle frames.

Or my flat, cartoonish, object series (some below).

None of this includes the work I’ve done writing code, parsing data, researching, or any other number of things. It’s missing the work I’ve put in learning blender and creating new and interesting things there, often for the Fedora Linux project as a designer.

Self-Referential Multi-plane Camera Patent #2
Self-Referential Multi-plane Camera Patent #1

You can’t know if I don’t tell you.

So I’m going to try to take some time to arrange these things in a singular location in categories that make sense. And, honestly, not just for you―but for me. I honestly forget most things I work on, because I work on so many things.

The trick, as always, with art is to know when something is finished.

¯\_(ツ)_/¯

@dicewarebot, the solution I needed that no one asked for

A number of years ago I was trying to learn python. Random numbers have always amused me (as I was recently reminded by a twitter nod to the weird usage of spreadsheets).

A user named @context_ing tweeted: “I love finding the ways in which people use spreadsheets. Personally, I use them for mostly budgeting, workout tracking and travel planning. Here’s a few in the wild I’ve found. Would love to see more! Please share if you’ve come across any or have any yourself.”

I felt compelled to reply with my own little story. “Reminds me of a decade old excel project. A playwriting book said something like “I guess it would be a play if you cut up words from a dictionary and pulled them out one-by-one, arranging them into lines of 10 words under character names, but it wouldn’t be a very good one.” So I took the entire public domain text of Oscar Wilde’s classic and had Excel recreate the play on every reopen of the file by randomly selecting words and character names I think using a vlookup and random. The result was interesting (and likely bad theatre).”

The text in question (blasted tweet limits!) was Oscar Wilde’s The Importance of Being Earnest. The resulting play was garbage, but that random interger generation was magical. When combined with other functions it really could do wonderful things for art.

Fast forward some (10?) years and I had a different problem to deal with: I needed to seamlessly transition all staff and clients from one grouping of technology services at one company to a different group of technology services at a new and different non-profit that was going to just continue doing basically the same work for basically the same people.

To remove almost all complexity from this story: I needed passwords; lots of random, unique, and strong passwords.

I once again turned to my friend the random number generator, but this time in python rather than excel. I coded up a script that would allow me to specify the number of words I wanted, unique separator I desired, and―importantly―how many of these unique passwords I wanted to be generated in one go.

I had the program roll digital dice and lookup words from the EFF’s Diceware password list and then spit them out. People would get their passwords and privately think I was just very adept at coming up with wacky sounding passwords, but I did not deserve this misconception as random integers were to blame for everything.

Eventually I thought it would be a good idea to create a sort of Public Service Announcement on the web about the odd truth that a list of words obtained by rolling dice really can be unique.

The end result is a Twitter bot and a Mastodon bot that very frequently tweet out unique passwords they’ve generated (though you probably shouldn’t use them). More people follow on Mastodon than Twitter, and Twitter relatively frequently blocks my bot’s tweets makes me unnecessarily prove that there’s a human behind the bot to get things going again (anyone at Twitter can explain this?).

At any rate, here’s some examples embedded below. Note that I also added the Harry Potter wordlist as well. There are others for your enjoyment on EFF’s site.

Lastly, there are infinitely better versions of this if you’re looking to generate a password. I’d recommend the much more easily installed passphraseme by Micah Lee.

At any rate, I hope you enjoyed my PSA.

Fedora 32 Wallpaper

This time around I was a late adopter (very late) and only recently upgraded my laptop to Fedora 32. It’s great to install a free and open OS and see a wallpaper you worked on greeting you (as I did with Fedora 32). I was involved in creating the Fedora 26 wallpaper as well which featured a treeline that followed a sound wave of my voice saying the word “Fedora.”

I was recently able to attend the Nest with Fedora event (an online, from home, mid-pandemic version of Flock that was wonderful as I was able to “meet” many of the screen names I’d seen in forum posts and email lists for years.

Fedora’s design process is open but not many find their way to the ticket thread to follow along (here’s a link the above wallpaper’s thread). I figured I’d share some of the other angles and shades of the above that I had been using as my background until my recent upgrade―initially for testing but then they just kind of stuck. They’re much too dark for a default Fedora release, but I figured I’d share them here. My favorite is the lone object, floating in the void.

Lastly, if you want to get involved on the next wallpapers check out the discussions about Fedora 33 and Fedora 34 on pagure at the links.

Goodbye, Quote Cards

A 3x5 index card with a quote from a book.
Quote card from Creativity by Mihaly Csikszentmihalyi

I’ve been cleaning up some items and came across a series of index cards I was using for note-taking during my doctoral dissertation. This one is on the subject of creativity, freedom, attention, and rules.

While this was a preferred method of mine years ago I’ve since migrated to Emacs’ org-mode. I happily typed these in and can say goodbye to the cards themselves and more formally the process.

At any rate, I have some older quotes in a more quickly parsable medium now. I may revisit some of the great ideas in that book in the future here or elsewhere. Mostly I am writing this to say: once I took notes like this. Future self, do you remember this?

Constant.

Constant. – Kyle R. Conway

The Poster Elements

This poster is comprised of the following primary elements:

  1. Partial phrase: “constant pressure, constant activism” uttered by Noam Chomsky in a recent interview.
  2. Two Works Progress Administration (WPA) posters:
  3. Font: Blackout by The League of Movable Type
  4. Grit: Manipulated grittiness (me) from a photo by Yeon Li on Unsplash.

The Creation of Fire

The WPA has long been a source of inspiration, awe, and and envy for me. With an extensive background in the arts and theater, the very concept of the government directly investing in the arts in a profound way that leaves a deep impact not only at the time but nearly a century later is something akin to the creation of fire―and the arts was only a part of that wonderful project.

The recent centrality of the Green New Deal―with it’s framing firmly and clearly recalling the New Deal, from which the WPA emerged―has allowed that previous envy to turn to a weird nostalgic hope that my own lifetime might have such a force of art unleashed on the nation.

And if you haven’t read the Green New Deal take the below, easily accessible links, as me encouraging you to read it. I highly recommend the attractively formatted 14-page PDF version, but here are both: [html] [pdf]

So entwined is this national history of art (even the stylistic components) that as the Green New Deal has continued to grasp the imagination of climate activists it was even promoted by commissioned artwork recalling that distant past.

The Spark

I’ve long been musing and meandering internally about somehow contributing artistically to this Green New Deal reality that I would like to exist. Sanders’ movement was and is a part of that reality and seemed the most obvious conduit through which to achieve it.

It still is.

Noam Chomsky’s musing on the Sanders campaign―notably distinct from the movement―was instructive for me:

It’s common to say now that the Sanders campaign failed. I think that’s a mistake. I think it was an extraordinary success, completely shifted the arena of debate and discussion. Issues that were unthinkable a couple years ago are now right in the middle of attention.

The worst crime he committed, in the eyes of the establishment, is not the policy he’s proposing; it’s the fact that he was able to inspire popular movements, which had already been developing — Occupy, Black Lives Matter, many others — and turn them into an activist movement, which doesn’t just show up every couple years to push a leader and then go home, but applies constant pressure, constant activism and so on. That could affect a Biden administration.

– Noam Chomsky on Democracy Now

US

So in addition to the nice quote and concept of “constant pressure, constant activism,” this comment helped me to contemplate what Sanders’ Not me. Us. movement might look like without the Not me part―just Us, graphically.

The movement without the man.

Yes, it is extremely basic, and no, I can’t say I thought about everything fully here from a design and/or marketing perspective as I was just making a poster with a nice quote, but the simplicity of US being on the bottom center of an otherwise empty sign for many reasons felt right.

  • Underdog: Us isn’t on the top… yet.
  • True Center: Us isn’t even really on the left―Us is center.
  • Young/Small: Us isn’t big enough… yet.
  • Acronym: Us is also the U.S.
  • Sans Sanders: Us doesn’t have a Me that it’s not anymore―it’s just Us.

On the last bullet point: I did briefly contemplate having a Not me on top of the Us, but it’s not needed and it’s not the point. There’s a beautiful simplicity and solidarity in the lone US on a sign, especially when it’s held by characters drawn between 1936 and 1940 as part of the WPA, which was part of the original New Deal, originally to promote books (and presumably the scary socialist libraries that house them). You can see artist Arlington Gregg’s other WPA poster work at the Library of Congress.

Let me know what you think of this thing. And, as the Sanders yard sign was recently stolen from my font yard I’m thinking of replacing it with an “US” yard sign. It might look nice for a minute before it disappears, but it’s meaning would live on.

Sonnet #011

By Kyle R. Conway on 2020-04-15 in GNU Emacs

Note: This was written with the purpose of being less detectable as a structured poem if the line breaks are removed. I’ve placed that version immediately above the formatted sonnet.

(Secret) Sonnet #011

In quarantine I have been writing thoughts down in my org-mode notebook to preserve the things I’m thinking as the world’s distraught with stay-at-home’s and flattening the curve. I realize I have been trying to hide the simple joys of language from myself with self-imposed busyness I tried ignoring simple keys to mental health.

So once again I’m writing like I did before I found myself sheltering in place and now I’m so embarrassed that I hid the writing I should otherwise showcase. At any rate, I thought I’d write and share this secret sonnet of which you’re now aware.

Sonnet #011

In quarantine I have been writing thoughts
down in my org-mode notebook to preserve
the things I’m thinking as the world’s distraught
with stay-at-home’s and flattening the curve.

I realize I have been trying to hide
the simple joys of language from myself
with self-imposed busyness I tried
ignoring simple keys to mental health.

So once again I’m writing like I did
before I found myself sheltering in place
and now I’m so embarrassed that I hid
the writing I should otherwise showcase
At any rate, I thought I’d write and share
This secret sonnet of which you’re now aware.

Published
Categorized as art, sonnets

Sonnet #001

By Kyle R. Conway on 2020-03-22 Sunday in GNU Emacs

When stuck in time between a tunnel’s light
and each escape obscured by mortal dread
from whence shall solace torch a flame so bright
alleviating anxiousness in head?

Must nothing happen as all sit and watch
such silent and invisible true foes
encroach so quietly and cut each notch
by stealing life breath underneath each nose

Uncertainty―uncertain though it seems―
may be a sort of blessing so disguised
to see beyond collective, fevered dreams
and poems composed in fear soliloquized.
By writing I will quell my anxious mind:
immortalized anxiety enshrined!

pandas, COVID-19, and plotting

# Import Libraries
import pandas as pd
import matplotlib

# Magic Code for Inline Display
# in Jupyter Notebook (if you're using that)
%matplotlib inline

# Create Dataframe from tables at URL for Iowa COVID-19 Testing
url = 'https://covidtracking.com/data/state/iowa/#history'
df = pd.read_html(url)

# There are multiple tables on the page,
# and they are saved in a list.
# Choose the 2nd table and rename to 'df'
df = df[1]

# Set the type for the column 'Date' as a datetime type.
df['Date'] = pd.to_datetime(df['Date'])

# Set the newly typed "Date" column as the index.
df.index = df['Date']

# Create a new dataframe from the original with only
# the 'Pending','Negative', and 'Positive' columns
iowa_testing = df[['Pending','Negative','Positive']]

# Plot this new dataframe as a stacked bar graph 
# Invert the axis so time moves forward.
iowa_testing.plot.bar(stacked=True).invert_xaxis()

It outputs something that looks like this.

hello!!! … World?

This is the original playscript I wrote for The Art of Python that took place at PyCon U.S. in 2019. I additionally performed the piece at PyCon with the directorial help of Sumana Harihareswara and the stage management work and acting performance as the Figure by Mel Chua.

There were some changes to this script for the live performance. I created slides for the event and they were displayed behind me during the performance and are presented throughout the script below as images.

The Void

(slide reads: “THE VOID”)

(the stage is empty. We can make out one person, a figure, front and center.)

Kyle

(staring, wide-eyed, excited, past the audience – beat * 3)

Hello!!!

(slide reads: “This is Kyle –”)

(beat * 3)

Hello?

(slide reads: “he’s learning the new skill of –”)

Hello?!

(Terrified / heavy breathing / beat * 1)

(slide reads: “computer programming –”)

Hello, World?

(Covers his eyes with one hand, twists away from the audience as if what he is about to do might blind him, and clicks a single finger down on an imaginary ENTER key. Bright lights up full. Beat * 3 – he peaks through his fingers.)

It worked? It worked! Ha ha! Yes! Look at that. There it is: “Hello, World!” (Hand on hips – power pose) And you thought this programming thing would be hard.

(slide reads: “but Kyle was in for – “)

(Red lights, loud, blaring sirens)

(Kyle freezes in a macabre, horrific expression and body position)

(slide reads: “– a rude awakening.”)

Not a Programmer

(slide reads: “on not being a programmer”)

Kyle

No, I’m not a programmer, I’m just better than you are at excel spreadsheets.

(click sound. beat.)

No, I’m not a programmer, I just figured out how to use this query-like syntax with your data in Google’s spreadsheets.

(click sound. beat.)

No, I’m not a programmer. It’s just a little bash script I wrote that helps me journal better from my phone, laptop, and desktop.

(click sound. beat.)

Ha! I wouldn’t say I’m a programmer, I just needed to batch download a really big list of files from a service we were using and python seemed easiest after a google search.

(beat.)

I’m sorry, what?

(beat.)

No, yeah―it did work―ran for about 80 hours straight before finishing. Lots of files.

(click sound. beat.)

Okay―fine―I’m doing some programming: but I’m not really a programmer…

Picking a Language

(slide reads: “on picking a programming language”)

Kyle

Hi. My name is Kyle and I’ve decided to become a programmer. Several blog posts, books, and twitter surveys have lead me to believe that it is of the utmost importance that I:

(the next sequence is rapid-fire)

(between each beat are quick head, body, and vocal tone adjustments)

(very short beat. matter-of-fact:)

Learn Visual Basic, because my high school teacher gave me a book one time and I can probably find that in my basement if I look hard enough.

(very short beat. sarcastic:)

Learn Bash, because it’s already installed on the self-inflicted torture device known as my Linux Desktop.

(very short beat. in jest:)

Learn emacs lisp, because you’ve already invested the time into memorizing emacs keybindings and you’ve heard it could use a good text editor.

(very short beat. whatever:)

Learn Go because people talk about it on twitter a lot and it was created by Google.

(very short beat. haughty:)

Learn COBOL because it’ll always need maintaining, and it pays the best in my geographic location.

(very short beat. overheard/whisper:)

Learn Python because it’s the “second best language at everything.”

(very short beat. honest:)

Learn Javascript because it pairs well with my graphic design background for web development.

(very short beat. snooty:)

Learn R, because it’s the best language at data analysis and graphical representation.

(very short beat. authoritative:)

Learn HTML and CSS because you can make things on the internet―oh, wait―nevermind―there’s disagreement as to whether or not these are programming languages?

(beat. drop all pretense. speak directly to audience―with pure, sincere, exasperation:)

Am I really learning programming if I just know something like “hello, world!” in 10 programming languages!?

(beat.)

… and HTML and CSS?

stack overflow

(slide reads: “submitting a question to stack overflow”)

Kyle

(Kyle appears frustrated, staring straight ahead and typing in furious bursts.)

Python. Sort. Array. Count. Items. … Search.

(beat. scrolling:)

No. No. No way! What? No.

(beat. scrolling:)

And… no.

(loud sigh. lowered head. stretch neck. he tries again:)

Python. Array. Group-by-count.

(beat.)

No… no…

(beat. tilts head:)

Sort of?

(clicks. beat.)

Oh. No. No, no, no. Not that, kind of…

(beat. types again)

SQL group by with python?

(beat. smiles/excited:)

Hey! That’s kind of it…

(face drops.)

Oh! Rude! That’s not a helpful or kind response. Do I even want to submit the question here?―mean!―I already don’t know what to ask or how to ask it and apparently that’s a reason to say that you shouldn’t even ask the question.

(beat.)

Maybe I’ll just figure it out myself…>

(a transition. Kyle is holding a rubber duck.)

I’ve heard talking to you helps…

(slide reads: “Kyle works.”)

(duck is gone. cracking knuckles and stretching:)

Done―well, an example anyway, explaining exactly what I want to do and suffers the same problem as my actual work. But I still don’t know how to solve it.

(beat.)

Submit to stack overflow? Submit?

(resolve. clicks enter confidently:)

SUB. MIT.

(transition. later:)

An answer!―that does basically what I need―and they think I asked a good question―and I got fake internet points!

(beat.)

Okay then. Maybe I can do this.

(smile.)

Meetup

(slide reads: “on going to a meetup”)

Kyle

(hands in pockets. kicking dirt. retelling:)

So, I was sick of trying to learn things on my own―by myself, in my basement―and I found a meetup online. It was at a chain soup and sandwich place on a Saturday.

(beat.)

I clicked “attending” and went.

(miming what’s described.)

I got my laptop charged up, threw it in my laptop bag along with a notebook, a pen, and my charger, and slung it over my shoulder and headed in.

(beat.)

I guess I didn’t know what I was expecting? When I walked in and scanned the room looking for more than like four college students with their laptops open over coffee. There they were―I think. Play it cool!

(beat. walking:)

I headed to the counter and ordered a coffee―maybe I’d get thirsty―and walked up: “Is this the python group?”

(uncomfortable smile, holding breath and upright―more uncomfortable long beat…)

It was. That’s what it felt like―forever. They were nice. Young. Old. Macs, Linuxes, and Windows. Qwerty, Colemak, and Dvorak. Gnome and i3. Emacs and Vim and VSCode and Sublime. Working in finance, consulting, healthcare, insurance, startups, and going to college.

(beat.)

They were just people.

(beat.)

I didn’t learn much about programming that day―I did learn that there are real people in real life who care about some of the things I do.

(beat.)

I needed to reach out to more of them.

(break fourth wall. wink.)

Sending an email to a stranger in tech.

(slide reads: “on sending an email to a stranger in tech”)

Kyle

(straight to audience. single light.)

(like an awkward introduction at a job interview. exasperated:)

Hi. I’m Kyle. I’m new here. I want to get better at this technology thing. Can you help me? You seem like you could help me.

(beat.)

’cause I need a lot of help.

(ding sound. beat. overly formal:)

Hello. My name is Kyle R. Conway. I have a PhD … in Fine Arts … and you do art … and so do I … but you also do tech things … tech things with art. I would like to do what you do. May I join you?

(extends hand for handshake. beat. wide eyes. beat. more intense.)

(ding sound. beat. casual:)

Hey, tech blogger. I really liked your post about unpackaged fonts with permissive licenses. I think that’s really cool.

(ding sound. beat. rapid-fire round. cheeky:)

Howdy!

(ding sound. beat. Irish:)

Dia duit!

(ding sound. beat. concerned:)

I promise I’m not a creepy stranger.

(ding sound. beat. intense:)

I. Am. Your. Biggest. Fan.

(gong sound. rubbing eyes. honest:)

This is never going to work.

(quick fade. slide reads: “Kyle’s actual first email to a stranger in tech.”)

Thu, Mar 17, 2011 at 11:36 PM>
Máirín,
Would the “Nina” font meet the criteria for inclusion?
http://www.archive.org/details/NinaPaleyFonts
Thanks,
KYLE

(slide reads: “Thanks for writing back, Máirín”)

The Figure and the Void.

Figure

(A figure stands alone in the darkness.)

(The figure shouts with naive confidence into the void a single word:)

“Hello!!!”

(and… waits…)

(The figure finishes the phrase―now a question:)

“World?”

(figure stands awkwardly, concerned, awaitang a response with growing insecurity.)

(slide reads, slowly, word-by-word: “what. can. you. do. to. make. this. journey. easier. for. others?)

(slide reads: “end”. )

(ding sound.)

Honestly Blending

If you’ve not messed about with Blender 2.8 yet you’re truly missing out. I’d previously taken some cracks at getting into this 3D software before and quickly found myself returning to the more familiar world of pen and ink or the 2D Inkscape for my artistic needs. But, just look at this procedural marble that I built that changes colors with ease―and also changes perspective (i.e. 3D).

It’s kind of incredible.

Look at how easily you can change color… and perspective!

Below is a screenshot of the node setup I used for the marble. I’m not entirely sure that all of those connections are necessary, but the leftmost node is a texture, then I color it, and have the color connect to both the color of the Principled BSDF shader and to the roughness (which more or less affects how much it reflects the light; or how shiny it is).

My shading “node” for the marble shown above.

I definitely do not understand what I’m doing well enough at this point to be said to have any idea at all of what’s going on, but I’m having a great deal of fun with it. More, certainly, to come.

Published
Categorized as art Tagged

One True Thing

CC0 - Smithsonian

TL;DR

I’m asking you to submit a single sentence that tells your own One True Thing about working in tech for a unique performance at this year’s PyCon conference. Please click here to submit (takes less than a minute!).

Or, if you’re up for something more involved, to submit a longer proposal for the larger event.

Last Year

At last year’s PyCon I was one of several writers and performers at a Hatchery event called The Art of Python, which sought to encourage and showcase novel performance art that aimed to help technologists share their emotionally charged experiences of programming. I wrote and performed an original show titled Hello!!! … World? which outlined my own trials and tribulations in a series of vignettes on trying to get into programming without being around or knowing anyone personally who was a part of those communities. As a small taste, one vignette was titled on submitting a question to stack overflow.

This Year

This year I’m part of the team that’s organizing the event again. We are aiming to create a dramatic narrative around programming and programming culture that shapes so much of all of our daily lives (from our smart phone interactions to surfing the web to banking and even reading this post). We are interested in how fictional narrative, visual and performance art, and different presentation formats can lead to a new sort of self-consciousness and reflection on culture. All society is permeated by technology, whether or not someone is a programmer, and most people have had positive, neutral, and adverse interactions with technology (whether building, consuming, or indirectly being impacted). In short, technology is not a black or white issue, but instead a collection of frustratingly similar shades of gray.

The Zeitgeist is teeming with moral and ethical issues both in and brought about by computer technology―be it developers challenging companies’ practices that conflict with personal values, software licenses trying to append morality clauses, the increasing omnipresence of technology that enables controversial surveillance, or the seemingly endless push toward dark patterns in design.

Technologists face many ethical and moral decisions in computer science and software development. What was the situation? What was the ethical and/or moral discord? What decision was made? How did you come to that decision? What was the outcome for all stakeholders? How do you feel about it now? What might you do differently in the future? Why?

These questions take time to answer and are difficult to dramatize successfully to honor their truth.

An Old Technology

Storytelling is an old technology―a powerful medium―through which we gain empathetic understanding.

All culture is now technological culture to some extent. We believe it is important to integrate the stories of those making this technology to broaden their lexicon and ours. We must highlight their ethical struggles to bring greater transparency and self-consciousness to both technology industry professionals and the public at large. Hopefully this also inspires empathy for all people, and urgency for any obvious changes that result from our workshops and the resulting art.

From Audience to Creator

While our event this year will have unique and pre-rehearsed performances as we did last year, we will also have a workshop following the scheduled performances. During our workshop we will discuss collaboratively how a variety of issues have cropped up in the lives of the programmers participating, as well as the end-users who experienced the technologies. Everyone will have a chance to work with the other directors and playwrights in order to take these insights and begin to turn these stories into dramatic narratives highlighting the personal struggles of these developers that are building the technology that ends up on the front pages of our papers and the billions of tiny-screened pocket computers.

One True Thing

As a part of the planned performances we want to transition into our workshop with a series of real issues crowdsourced from the broader tech community. To that end, we’re asking you to share One True Thing with us so that we can share your truth at PyCon this year (and elsewhere) in a collaborative performance that we hope will inspire more art from technologists.

One True Thing is a performance comprised of single-sentence statements of truth crowd-sourced and eventually read out loud by members of a live audience as statements of someone else’s truth to be publicly shared and communally experienced.

Examples

Note: At the moment I’ve sourced these from technologists on Twitter. Obviously every group would provide their own unique takes, so these should serve only as an example.

Here are some example statements:

  • “Racism struggle does not belong to one race.” – @LambyTech
  • “Mentors are incredibly important for succeeding in tech” – @js_tut
  • “I always joke that someday I will quit the tech industry so I can code all day” – @sarah_edo
  • “Moral and political issues of tech aren’t moral and political issues because they are tech.” – @dingstweets
  • “A women in tech recently asked me if I had any advice & all I could think of was: have the patience to prove people wrong the rest of your career.” – @jessfraz
  • “When you ask a Deaf person if they can read lips, you are asking if you can put the burden of communication solely on them.” – @csano
  • “you tech people need to hang out with artists and creative folks more, seriously.” – @noopkat
  • “algorithms reflect the biases of the people who make them.” – @evacide
  • “So many of the concerns raised about tech today seem to conflate societal issues with the technology that makes those societal issues more visible.” – @mmasnick

Share your One True Thing

Please click here to submit your One True Thing (it takes less than a minute!).

Thanks for reading and for sharing your truth.

Published
Categorized as art Tagged

Download Issue of MagPi with python from Raspberry Pi 3 Model B+

# MagPi Issue Downloader

## Import 
import urllib.request
import shutil
import requests
import os
from bs4 import BeautifulSoup

# Identify URL to parse
url = 'https://www.raspberrypi.org/magpi-issues/'

# soup it
Link = requests.get(url)
soup = BeautifulSoup(Link.content,"html5lib")

# get all link tags
tags = soup('a')

# loop tags
for hlink in tags:
	
	# create variable for full url
	issue = hlink.get('href', None)
	
	# only follow hlinks with PDF in the url
	if 'pdf' in issue:
		
		# download files with wget to current directory
		print("Downloading: " + issue)
		issue_link = url + issue
		os.system('wget %s'%issue_link)

Can’t decide…

Built with online pixel-editor.

I’ve been playing around with other blogging platforms for a while now… Ghost, Hugo, Django, and others. Is WordPress what I continue to use? Something else? I wish this wasn’t such a struggle, but I’m keenly aware of what drives this indecision.

1. Nostalgia

I am, first and foremost, driven by a nostalgia for a time I remember more than participated in, where websites were closer to https://motherfuckingwebsite.com/, devoid of most types of styling and thus:

  • uncomplicated
  • fast
  • easily understood (from a technical perspective)
  • and thus… hackable.

It’s not particularly mysterious why these things appeal. However, they’re simultaneously conflicting with the following.

2. Design

I’m a sucker for good design. You’ll note that this is mostly in direct opposition to the simple, text-based, monospaced font aesthetic in #1. Yes, I have a couple advanced degrees in art. Yes, I’ve worked in marketing and design for a number of years. Yes, I care about how things look and my eyes are drawn toward minimalistic, but chic, so-called content.

*le sigh*

3. Fun

I actually find it great fun to play around with other platforms and I find myself doing this frequently. It’s honestly one of the reasons I ended up finally getting a domain and a shared hosting server. I like messing about with things to learn new things.

The Slow Learn — running Ghost 2.0
Little — running Hugo

Devlog — running Bludit

A selection of some of the many site platforms I’ve setup and used to write on in the interest of good-old-fashioned curiosity and general interest.

New WordPress

And so, wordpress just updated it’s blogging platform and this somewhat older site got upgraded is well. It’s substantially more pleasant to write in than the previous iteration―but it lacks the simplicity of something like Hugo (especially if I were to set it up to use emacs’ org-mode as the base as I’ve been planning). We’re not there yet.

For the moment I’m going to ignore this inner conflict about what to use as a platform. Perhaps that will allow me to focus on the projects themselves. At any rate, if you’re interested in checking out what I’ve written at those other projects do click the images above to visit wholly different pages.

Roll One – Version 0.0.2

I’ve added some complexities this time around. There’s a new shape (the triangle) and a strong implication that this is a multiplayer game. There’s also the concept of overshooting the target (i.e. the goal―square|box). This results in immediate loss for the player.

In the first version of the game the player was rewarded for rolling a 1, in this game, the player is rewarded for rolling a 2 (or two 1’s in a row). There is no concept of restarting the game by implication in the rules (i.e. roll until you roll a 1), so we’ve created a sense of failure that the other game didn’t have.

It’s still purely a game of chance (no skill), but the game has changed.

Sidenote: I find it odd that I’m most fascinated by the philosophical changes the game. The idea that the game went from one of self-determination and meaningful effort in the face of loss, to one where loss means losing decisively and failing forever. Not only that, undershooting has a penalty (i.e. skip one turn), while overshooting is an immediate loss. This game requires perfection via luck.

I hesitate to say this game is designed yet, but there are clearly elements emerging. The key being the most interesting. Also, the quick use of unicode for the shapes in the rulebook is quite lovely. I’ve added version numbering (per the first post) to keep track of progress as we move along. I also sort of like the void―the space outside the gameboard―that results in automatic death. Stripes, in this game, are evil. Players must stay inside the lines.

Perhaps in the next version they’ll find a way to break out…

Musical Thing(y)

I spent about five minutes playing around with this thing. Kind of fun. Very colorful. No apparent export tool 🙁

 

Published
Categorized as art, music

Roll One

This is the start of a new game.

Applying game constraints in collaborative activities often generates more creative ideas―breaking people outside of the pre-confined boxes. This different context and ruleset allows for an exploration of why the walls of the box were there in the first place, whether or not they still serve a purpose, or even if a box is appropriate at all.

I’ve been growing in my certainty that games are an appropriate medium for telling certain types of narratives. I’ve been on-and-off working on a boardgame about the healthcare system for the past two years. Having never produced a boardgame before it’s a process of fits and starts, uncertainties, whiteboarding, planning, complexification, distraction, and not enough real-world testing. Who knew healthcare was so complicated?

Earlier this week my son showed me a mass-produced book that he was excited about. It contained a great number of very basic, simplistic, and heavily-branded single-page board games. None of these, it seemed to me, would win awards or capture attention for too long, but there was at least one virtue: they existed. Someone, somewhere, had played them.

Later I had a thought that stuck with me: what if I make a game out of creating games? What if I start by creating a very simple game and then add complexity and modify it in different ways until it grows to become something much more interesting than it started? Is that a good way to create good games?

Well, I don’t know if that’s a good way to create good games―but it is a good way to make creating games a game itself. I’ve gamified game creation for myself. I couldn’t be prouder of this theoretical process. The actual product may leave something to be desired though (feedback welcome).

I must admit that it gives me joy to allow the player to choose the di they use for the game. All sorts of fascinating thoughts arise from this one point of amusement:

  • What if the player piece is actually the di itself (and the value of the player’s di actually directly influences gameplay)?
  • What if the di is a choice on each turn (and increases or decreases the odds on each roll depending on desired outcome)?
  • What if chosen dice can be combined somehow to choose paths, or branches, or even directions?
  • Does the color of the di matter?
  • Would the game come with dice (if sold) or would users always supply their own?

These thoughts make me confident I can produce version 0.1.1 (or whatever odd version numbering I choose for tracking this odd journey). I kind of like the idea of the eventual game being called “Roll One” (as in Roll 1.0). That the version numbers (let’s pretend this is 0.0.1) increase over time, always moving toward 1.0.

One last thought: what if the actual 1.0 game doesn’t just allow for the selection of dice, but also for the selection of the version of the gameboard (or ruleset) you play upon/under? What if you roll dice to determine what version of the rulesets and gamebard you use?

Perhaps I’ve been overly influenced by Merce Cunningham. Perhaps it’s for the best that I stop blathering on about what I might do and start doing. Perhaps that’s the point of releasing something simple. Perhaps this really is the start of a fun game (for me, at least). Wanna play?

Roll-One

Rolling Dice in Python

The below rolls dice in python.  I’ve long loved python for dice-rolling―having created a now defunct twitterbot and a mastodon bot―it was nice to write this up briefly as I’m working on re-re-re-learning python.

#!/usr/bin/python3 
from random import randint 
 
total_dice = int(input('How many dice? ')) 
dice_val = int(input("How many sides? ")) 
 
rolls = [] 
high_roll = 0 
low_roll = 0 
 
for i in range(total_dice): 
 roll = randint(1, dice_val) 
 rolls.append(roll) 
 
nums = len(rolls) 
 
print("") 
print("Roll #\tRoll") 
print("------------------") 
 
for i in range(nums): 
 print("#" + str(i+1) + ":\t" + str(rolls[i])) 
 
 
print("------------------") 
print("Highest: " + str(max(rolls))) 
print("Lowest: " + str(min(rolls))) 
print("------------------") 
print("TOTAL: " + str(sum(rolls)))

Output looks like the below:

How many dice? 20 
How many sides? 20

Roll # Roll 
------------------ 
#1: 8 
#2: 6 
#3: 18 
#4: 7 
#5: 14 
#6: 7 
#7: 6 
#8: 12 
#9: 2 
#10: 10 
#11: 2 
#12: 13 
#13: 3 
#14: 10 
#15: 20 
#16: 5 
#17: 6 
#18: 19 
#19: 1 
#20: 15 
------------------ 
Highest: 20 
Lowest: 1 
------------------ 
TOTAL: 184

Wonderful fun.

Published
Categorized as code Tagged