Three rows of orange-ish colors with the text 'fake hues' over the top of them in white.

Social Media Jujutsu

Jujutsu1 is a martial art focused on using your opponent’s momentum against them– clever redirection of force rather than trying to meet it directly. This seems like it might be an option for some of today’s social media woes where people are trying to continue to take advantage of the good aspects of these tools/communities while opposing some of their attempts at manipulation. There are major alternatives like Brontosaurus Mastodon but many people aren’t going to make that jump.2 So consider this post more of a way you might mitigate harm while continuing using tools meant to bend your mind and warp your perceptions. Twitter Numbers One way these interfaces play games with your mind is by showing all kinds of numbers. You’ve got a score card for likes, retweets, followers etc. It becomes a shortcut. Is this tweet funny? 453 people fav’d it. Should I fav it too or is this just a bandwagon thing now? How good was my tweet? Did enough people retweet it? That extends even to following people. How many followers do they have? Are they worth following? It can make you skip really looking at the content. One path out of Twitter’s attempt to manipulate you via numbers is Benjamin Grosser’s Twitter Demetricator. It’s a browser plugin3 that removes all those numbers replacing them […]

06

Weather API + Google Sheets

I have many little robot scripts busy saving data to Google Sheets. Here’s one I made based on a little comment from one of my kid’s teachers. It goes to a very kind URL that returns the data structure at the bottom of the page. http://api.wunderground.com/api/YOUR_API_KEY/conditions/q/VA/Richmond.json It’s a pretty nice starter script for anyone wanting to play with an API and Google Scripts. The full Google Script is below and I’ve tried to comment it up pretty thoroughly. I’ll also break it down below for those of you who want to play at home. Get the Data The first variable ‘url’ is the API endpoint we’re getting the data from. Where it says YOUR_API_KEY, you should put your API Key. I recall early on trying to do this stuff I’d get confused when people did different things to indicate that an API Key should go somewhere. People would put it in quotes or surrounded by asterisk or something else. I’d end up confused about what should go there because I had no baseline to judge this against. It’s fairly obvious now but I haven’t forgotten that feeling of basic confusion. Sometimes it helps to be very basic. Google has a nice UrlFetchApp class that you use in Google Script instead of fetch like you’d use in vanilla javascript land. Since […]

01

Google Form to Google Sheets to Vue Website

When @cogdog & @twoodwar Were Building Websites From Google Spreadsheets Years Ago https://t.co/Im7oCecvpg — Keegan?Long-Wheeler (@KeeganSLW) February 28, 2018 This post from Keegan kicked of this demo.1 The goal is to create a pretty flexible template for using Google Forms to Google Sheets to simple website. I opted to do this one in Vue but may get around to doing it in plain JS or jquery if time allows. The first thing you need to do is make the form and put in some entries. You’ll be happier if your form prompts aren’t super long. Make them readable just keep them concise.2 Once you’ve made a few entries so you have some data to work with, publish your spreadsheet as HTML. File>Publish to the Web. Click OK and what not. Don’t bother going to that link as Google has made that a fake promise. You just need the ID of the document in your current view. It’ll be something painful like 12WsyLvtfIPJkCXgEXsRkrI6dS0_K6brJikZqzkQa8TU and is visible in the URL after the /d/ but before the /edit. You can see the spreadsheet here. It doesn’t really matter but !full transparency! With that ID in hand, you want to go to a URL like so. You could manipulate the number in the URL to hit different pages in the spreadsheet. https://spreadsheets.google.com/feeds/list/12WsyLvtfIPJkCXgEXsRkrI6dS0_K6brJikZqzkQa8TU/1/public/values?alt=json You should […]

23

WordPress Timeline JS Plugin

Background I like Timeline JS. It’s a nice way to create multimedia timelines. I’d previously done some work that would take WordPress JSON API data and insert it into the Timeline JS view.1 It was nice for creating alternate and standardized views of blogs that might be useful for different reasons. It didn’t serve some other needs and while doing it through a generic URL was handy for many reasons it was odd in other scenarios. As a result I decided to make a new version as a plugin. If you don’t like reading stuff there’s a quick video of how it works below. Plugin Goals First, I wanted this to be a plugin rather than a theme. That adds a bit of complexity because you don’t have control of the whole scenario but it makes it much more portable and more likely to be used as it doesn’t require people to change themes or spin up an additional site. I wanted people to be able to use WordPress rather than a spreadsheet to create the content for Timeline JS. Doing that has a few advantages- the WYSIWYG editor, the ability to upload images directly in WordPress, the ability to use posts you’ve already written, etc. etc. I also wanted people to be able to choose what posts ended up […]

A drawing of a small terrier dog jumping through a hoop held by a monkey.

Code as Poetry, Time as a Variable – Options in the Ether

Backstory Driving into work I was listening to NPR and they were interviewing Nikki Giovani a poet from Virginia Tech. In high school I was one of those people who really suffered reading the The Red Wheelbarrow and other non-rhyming poems. They irritated me in the same way people seem to be annoyed by White Paintings or 4’33”. In any case, in college I took lots of English classes. One of those classes was on poetry with Donna Hickey. The class selection was driven more by fitting my schedule and a vague notion that I might minor in English rather than any real interest in poetry. The first day of class she had everyone list their favorite poets. I don’t recall what people chose but I remember feeling like my choices of Shel Silverstein and Dr. Suess was not of the same category. In any case, I had a great deal of fun with the course and using poems as games and puzzles to think around and through. I later took a graduate course with Dr. Hickey1 in poetry and made my first digital liberal arts website around 2001 or 2002. It focused on breaking down various Richard Hugo poems and creating attempts at multimedia experiences.2 That stuff is all long gone from the UR website. I might have backup […]

06

Considering Making Digital Sociology Tools

First off, I believe that websites that help you think are tools. Websites that help you author media are also tools. So when I say “tools” that’s what I mean. I will also likely call them sites. That’s also what I mean. I like to start off posts like these establishing the fact that I’m not going to try very hard to make sense to you but at least I’m explicit about it. I’ve had a couple of conversations recently that have me close to building these with or without a faculty/course attached. #metoo Movies This started when I was watching one of the original Star Wars movies with my kids. I’d never really watched them closely as an adult. It really seemed like Han Solo was a textbook example of a person acting out some pretty specific examples of sexual harassment. Repeatedly Leia tells him to stop touching her and he ignores her etc. I ended up talking to some friends at a school function about it and the conversation expanded into the idea of a database of clips like this that both act as a lens on that time/space/movie and as examples of particular patterns that might be of interest more broadly. For example here’s Han being creepy . . . In order to write this post, I’ve […]

29

Census Reporter API Exploration

We’re trying out a new site idea for the online digital sociology program. Once again, Matt came up with an idea that really got me excited and I started wandering around trying to figure out how to make it work. At some point I found CensusReporter.org. This is a pretty amazing site that is a Knight1 News Challenge-funded project. What we want to do is figure out roughly where the viewer/visitor is geographically and give them a glimpse of that area through some data. Nothing too deep, just a taste of the interesting ways technology, data, and visualization can blend together to do interesting things. We don’t want the exact address for a few reasons. One, we don’t want to be too creepy. Two, getting a rough location through the IP address doesn’t trigger the browser approval request that more exact location data requires. My goal is not to subvert the approving/denying of location data but I worry too many people will miss that approval prompt and we’re not keeping this data. Get Location To get local data I have to figure out where the person is. To do that, I’m just grabbing the IP address and getting a location bounced back. There are a few ways to do this. I went with freegeoip.net and the following function would give […]

Full size view of the timeline .

Timeline Sketch #2

I am still kicking around ideas for a timeline of my work history. You can see some of the other stuff in this post. This version is a Bootstrap version that I think can end up working pretty well even in a mobile view with a bit more work. You can see it full size here. It’s set up so that there are two col-sm-6 containers that hold ten columns each making for a total of 20 covered years. I didn’t realize Bootstrap would let you just do col-1 and make it more than 12 columns. So I have two rows of 10 columns within the 6 column ‘halves’ of the page. That lets them break nicely on mobile views into two rows that stack. I set up some JSON to represent the jobs. I only did three so far but there are enough to see it’s functional. If you click on one of the first three job titles, you’ll see the data below the timeline changes. I haven’t really worked through the colors. I’m letting it marinate to see if I want to take it to fruition. See the Pen bootstrap timeline test by Tom (@twwoodward) on CodePen.

26

Portfolio // Data Visualization

This is meant to be a general survey of a fairly large swathe of concepts and examples with lots of links for additional specificity. I encourage you to follow links.1 I’ve tried to also mix it with quotes from a variety of designers.2 Those people are also worth exploring and most links will lead you to something that will lead you down an associative trail3 of links/searches.. Portfolio design considerations are grounded in many of the same design decisions that are foundational to good data visualizations. Many portfolios also include, maybe should include, elements that meet the typical definition of data visualizations although usually of small data sets.4 Both portfolios and data visualizations can be thought of as heuristics. You’re helping people think. You’re helping them understand you, a concept, a relationship, etc. Rich content brings meaning to a graphic. Inviting visualization interprets the content and highlights the essence of the information for the reader. Sophisticated execution brings the content and the graphics to life. Dona Wong Have an Audience in Mind5 The audience sets the initial frame for your consideration. Who are you trying to talk to? What are their likely experiences with websites and what do they care about? It’s also worth thinking about what might keep you from being attractive to people that you wouldn’t like. Assuming […]

03

WordPress Plugin Health Dashboard (Early POC)

In trying to get a better handle on how we’re going to manage our plugins in the future, I found the API for the WordPress.org plugins data. Not like they were hiding it but I’d not seen it before.Consider me Columbus– absent the genocide, slavery, and other terrible things. Replacing *slug* in the following URL gives you a pretty robust javascript With that option, I could build a little Google Sheet/Scripts viewer that would look up information based on a list of plugin slugs. I could set conditional formatting to do various things for visual cues . . . I could even build a little mini-algorithm to evaluate different aspects and weight them towards a total plugin score. I’m debating whether it’s worth working into a more sophisticated plugin that will tell me how many sites the plugin is installed on, display that data etc. There are plugins like that out there but they die on large multisite installations.1 I’d also like some way to tie into the vulnerable plugin announcements. Here are the two little functions that look up and write the plugin’s health based on the slugs being written in column A and a header in row 1. 1 I have a functional, if crude, option that paginates through them in a way that doesn’t crash/die.