Untitled

Dear Marie-Jeanne:

Thank you for raising me to be the kind of person who can see a trailer for a video game about bird attorneys, constructed from collages engravings, and casually think “Oh wow, it's Une Semaine de Bonté, the video game.

love, Peggy.

Lifecrease

The Siege of Syracuse

Back in 2007, I drew a picture and decided it looked like an album cover. So I drew a fake back cover, as well.

Siege of Syracuse (back cover)

Last week, I was looking at that picture and decided I still liked it. So I drew another picture, designed explicitly as the cover for a CD from the same band.

Lifecrease

And, of course, I had to draw a back cover as well. Complete with moody photo of the band.

Lifecrease-back

Back in the early 70s, Raven Museum was a fairly typical prog band. But by the early nineties, they’d embraced modern technology, drifting into a somewhat psytrance-flavored sound.

With the first one, the cover image came first, then the title and back cover; with this one, I started with the title, then the image, then the back cover. I had a lot of fun playing with the implied narrative of the credits – if Richard Chatham is the drummer, then why’s someone else credited with drums on half of the album? And why are there only three people shown o the back cover, despite the band officially being four people?

I figure that future albums list Richard as “drums emeritus’, and he continues to be absent in band photos and live performances. When asked what happened to him, the band inevitably changes the subject.

I also kinda feel like drawing my fictional band is the next step on a slippery slope that ends with me doing comics about them. Hey, it’s not like I’d be the first; Matt Howarth, one of my major influences, had a whole constellation of imaginary bands, one of whom started in a comic book that ran for like thirty or forty issues.

Technically, I’m proud of the front cover of the new one. I figured out a reasonably efficient way to do distortions without leaving Illustrator:

  1. Make a new layer, draw a 50% grey rectangle that more than covers the area you want to distort. Draw your greyscale distortion map on top of it, matching whatever parts of the image you need to – here, I matched the ripples I’d sketched in the water.
  2. Make a new artboard the same size as that rectangle you made in step 1. Export this artboard as a 300dpi greyscale PSD. I found that Illustrator consistently appended ‘-distortion map’ to the exported file name, interestingly enough.
  3. Turn off the layer you drew the distortion map in.
  4. In the layer you want to apply the distortion map to, draw a rectangle the same size as your distortion map. Give it no stroke and no fill.
  5. In the layers palette, target the layer you want to distort.
  6. effects->rasterize. 300dpi, add 0pt around the object.
  7. effects->distort->glass, load in your distortion map. 100% size, other sliders to taste.
  8. You’re done.

If you want it to be a higher resolution, you can do that. Just make sure you export the distortion map at the same resolution you rasterize the stuff you’re distorting.

(Sure, you could do this completely vector by doing a distortion mesh. But making a complicated mesh is a fiddly, annoying task that I really don’t care to do. And it takes a hell of a long time to render. This takes a not-unnoticeable amount of time to render as well, but it’s a lot faster than a distortion mesh on my machine.)

 

why I rarely watch video on the internet

them: [link to a vlog about something]

me: I don’t have an attention span built for video. This man is talking.
me: I had to stop my music to hear him talking and he wasn’t more interesting that the Shiny Toy Guns.

(They hadn’t watched the video either, if you were wondering.)

I think that exchange pretty much sums up my attitude to pretty much any video content on the internet. When I’m browsing the net at home, I have music playing pretty much all the time and I really just do not want to stop it unless it feels like it will actually be worth engaging my entire brain to watch whatever this is.

This is also why I hate tools that only come with video tutorials instead of text manuals. I just wanna learn what @#$% keys do what so I can fool around with it, I do not need synchronized sound and video to tell me that.

blaaahhh

One of those nights where I think about how much I'd like to call my mom and chat about nothing much important but I can't any more and then I end up lying in bed in the dark cuddling a plush raccoon and crying.

I mean it's not like I'd tell her anything major about my life. I've been drawing an album cover for an imaginary band instead of working on my next graphic novels. I've been playing video games. I upgraded to the latest version of Illustrator and it seems to be stable, unlike the last one I was stuck with for about six months. I've read some books. And she wouldn't have anything earth-shaking to say either. She'd tell me about books she'd read, or having to get the car fixed, or how she worries about her friend who lost her husband a few years ago, or whet Jason and Jennie's kids were up to. It would always be a pretty mundane conversation that we'd have pretty much every week, usually somewhere around the weekend.

I kinda stopped thinking about that regular conversation a month or so after she died. But tonight I'm thinking about it and missing her.

Fuck death.

light nerdery, 2

Screen Shot 2015-11-29 at 11.36.16 PM

So after a bunch of fighting with trying to directly build a menu then giving up and using a simplified toolkit, my little weather-based light control script now manifests a menubar icon, and a list of all of your scenes. At some point in the near future I will package it up as an .app, and add in dialogue boxes to enter your LIFX and forecast.io API keys. And then it will be pretty much done.

At some point in the further future I may want to also add the ability to actually set up what scenes it chooses between based on temperature ranges, but that’s a complicated beast involving designing and using a UI. And this is just a quick little Python hack.

edit. Now it’s on Github if anyone feels like using it or adding to it.

light nerdery

I just spent about five hours kludging together a little Python script to change the color of my foyer’s light based on the temperature. I already had that happening via If This Then That, but there were some limitations – it didn’t work well with me also wanting to change the light to a dim red in the evening.

So I dove into the mysteries of the LIFX web API, and the forecast.io web API, and wrote something. Now, my foyer will change between four different colors based on the temperature (blue/purple/yellow/nearly white) between the hours of 8am and 8:30pm, and switch to a dim red outside of those hours. There’s also a temperature offset based on the next hour’s conditions; precipitation or high winds lower the effective a bit so I’m not out there being miserable when it’s near the bottom of a temperature range and wind or rain is making it feel chillier.

# peggy's little foyer-light controller
#
# selects from a set of lifx scenes based on the temperature from forecast.io
#

import requests
import sys
import math
import time

lifxToken = 'your token goes here'
# generate your token at https://cloud.lifx.com/settings

darkSkiesToken = 'your token goes here'
# generate your token at https://developer.forecast.io

#
# desired temperature ranges for scenes you've set up via the lifx app
# 
choices = [
 {'scene':'Foyer Cold', 'lower':0-float("inf"), 'upper':54, 'note':'Wear a heavy coat, miss dragon.'},
 {'scene':'Foyer Chilly', 'lower':55, 'upper':66, 'note':'Light coat. Or sweater. Or something.'},
 {'scene':'Foyer Hot', 'lower':67, 'upper':74, 'note':'As long as your sin globes are covered, anything goes.'},
 {'scene':'Foyer Really Hot', 'lower':75, 'upper':float("inf"), 'note':'It is HOT. Take a parasol or something.'},
]

nighttime = {
 'scene':'Foyer Evening',
 'nightBegins': 20.5, # 24-hour decimal time. 8:30PM = 20.5.
 'nightEnds': 8.0, # 24-hour decimal time. 8 AM = 8.0.
}

# temperature offsets for various conditions
# as defined by forecast.io's 'icon' property of the forecast
offsets = {
 'clear-day':0,
 'clear-night':0,
 'rain':-10,
 'snow':-10,
 'sleet':-10,
 'wind':-5,
 'fog':0,
 'cloudy':-5,
 'partly-cloudy-day':-5,
 'partly-cloudy-night':-5,
}

latitude = '47.6659248'
longitude = '-122.3181908'
# where are you?
# really this should talk to OSX's location manager
# but that starts to look like work

repeatDelay = 5*60 # delay between repetitions, in seconds
 # lifx' api throttles you to about once a minute
 # forecast.io throttles to 1000 requests/day (about one every 1.4 min)

#
# picks a scene based on the forecast
#
def ChooseScene (choices, offsets, nighttime, forecast):
 # there should be some logic here to check the time
 # and if it's earlier or later than certain times
 # we cancel out and just display the nocturnal light
 
 now = time.localtime()
 now = now.tm_hour+((1.0/60)*now.tm_min)
 if (now < nighttime['nightEnds']) or (now > nighttime['nightBegins']):
 print "it's nighttime! the time is now ",now
 return nighttime['scene']
 
 # figures out temperature offset based on the next hour's condition
 condition = forecast['hourly']['data'][0]['icon']
 offset = offsets[condition]
 
 temperature = round(forecast['hourly']['data'][0]['temperature']+offset)
 print 'current temperature:',temperature
 for choice in choices:
 if temperature > choice['lower'] and temperature < choice['upper']:
 print choice['note']
 return choice['scene']


#
# contacts LIFX and acquires a list of scenes
#
def GetScenes(token):
 headers = {
 "Authorization": "Bearer %s" % token,
 }
 
 authorization = requests.get('https://api.lifx.com/v1/lights/all', headers=headers)
 
 if authorization.status_code != 200:
 print "\ninvalid authorization, maybe check your token?\n"
 sys.exit()
 
 scenerequest = requests.get('https://api.lifx.com/v1/scenes', headers=headers).json()
 
 # I am sure there is a much more pythonic way to do this. Works though.
 scenes = {}
 for scene in scenerequest:
 scenes[scene['name']] = scene['uuid'].encode('ascii')
 
 return scenes

#
# sets a lifx scene
#
def SetScene(uuid,token):
 headers = {
 "Authorization": "Bearer %s" % token,
 "duration": 60*5,
 }
 
 result = requests.put('https://api.lifx.com/v1/scenes/scene_id:'+uuid+'/activate', headers=headers)
 return result

#
# acquires a forecast from forecast.io
#
def GetForecast(latitude, longitude, token):
 forecast = requests.get('https://api.forecast.io/forecast/'+token+'/'+latitude+','+longitude).json()
 return forecast

#
# all functions are defined, time to do it to it!
#
lastScene = ''
scenes = GetScenes(lifxToken)

while True:
 forecast = GetForecast(latitude, longitude, darkSkiesToken)
 whichScene = ChooseScene(choices, offsets, nighttime, forecast)
 if lastScene == whichScene:
 print "no need to change the scene right now."
 else:
 print 'setting scene:'+whichScene
 SetScene(scenes[whichScene],lifxToken)
 lastScene = whichScene
 print "waiting a bit..."
 time.sleep(repeatDelay)

# fail silently because i'm a bad girl

…I really should get some kind of code formatting plugin for this blog someday.

a holiday avoided

So Thanksgiving was pretty good: I wandered out in the afternoon and hung out in the park with a book, then Nick came over and we marathoned Gravity Falls. I've now seen every episode extant, and am waiting for the final one like everyone else. No mandatory dinner with all the relatives or anything like that.

Nick is now puttering around the bathroom debating if he's going to go back home for the Thanksgiving thing they do there. I'm debating going to a thing a friend does. Might just stay at home and enjoy another fairly quiet day…

Also I should really open up my store for a few days for a SPECIAL BLACK FRIDAY SALE!!!!!1!!1!!!.

Skeen: the verdict.

 

So. The Skeen trilogy by Jo Clayton turned out to be pretty decent. My opinion of it is probably a bit colored by nostalgia, but overall I feel like it was a fun bit of SF, told with competence, charm, and flair.

I also realized that it is pretty much right in the middle of my sweet spot. It contains:

  • Charming rogues.
  • Shape shifters.
  • A travelogue across a full of strange creatures.
  • A lady protagonist.
  • Space opera mixed with fantasy.
  • A subliminal hint of queerness.

Honestly, I'm primed to like a book with just three of these. Skeen delivers on all of them. The lady protagonist is a charming rogue named Skeen, whose jaundiced but hopeful view permeates the whole story. The shape shifter is a lady named Telka, who is her adventuring companion for almost the entire book. The crew of hangers-on, assistants, allies, and obligations Skeen collects through the first two books include a quartet of elfin teenage boys with sensory cillia for hair, a squat, solid scholar who reminds Skeen uncomfortably of her SO, another shifter whose default form is something insectile that I tend to think of as somewhere between an anthropomorphic spider and an anthropomorphic mantis, a small boy who can spit poison and is the last of his tribe, that boy's pet frilled lizard, and a lady flying squirrel who is one of the ancients who created the Gate to the semi-medieval planet this all happens on. Then Skeen gets back to the normal world, with nobody but the flying squirrel and the shifter, and we meet a whole new crew of weirdos: Skeen's squat, solid, ex-acrobatic partner in crime (and bed) Tibo, her charming and feminine spaceship Picafrey, a pair of fellow smugglers named Hopeless and the Virgin (two nearly identical black ladies, the former being two meters tall, the latter only one, and mute save for a bunch of mysterious Voices that follow her around), a young scoundrel who knows the way to the planet of the ancient flying squirrels… Taverns full of even weirder aliens, hopping from one planet to another. It's just a whole lot of fun.

 

(The queerness? Skeen and the scholar share some no-limits S&M sex a few times – it's never described but it's clearly both consensual and really hot, albeit rather closer to the edge than either is really comfortable with. There's a few other bits that I got a feeling of possible non-het sex happening outside the narrative gaze from, though it may have been wistful thinking.)

 

Is it great art? Nah. It's a fun story, charmingly told. The second and third books both drag a little at the end; it's clear that Skeen's obligations, and Clayton's narrative obligations, have grown larger than either of them is quite comfortable with, and Clayton becomes more prone to resort to leaning against the fourth wall and saying, look, if I continue at the level of detail I wrote the beginning at then we'll be here for twenty books, and neither of that really wants that, do we? This and that happens, if you really need more detail imagine it yourself, I'm skipping ahead to the next good bit. Which to be honest was not something I complained about at all. It's like, did anyone criticize Star Wars for not showing the trade negotiations? You're here for the pulp adventure, not the politics.

 

If you want to give it a shot, it shouldn't be too hard to find used copies online. You could probably find illegal e-books, too. I didn't find any sites I'd quite trust but you might be better at finding piles of book downloads. Sadly you can't buy an e-book; Clayton died before that became a thing, and didn't seem to leave any heirs interested in making a few bucks off these, or any of the thirty-odd books she wrote over her lifetime. I've got four more of them either on my coffee table or in the mail as I speak: the first four books of the Diadem series, her first stuff. I'm looking forwards to them.

I almost never bother drawing characters from books I like, and I liked it enough to actually do that. I might even draw a few more, and do something like finished images of them all.

 

Fallout 4

Kerri: “so what’s the Fallout 4 verdict?”

My response:

It sure is another open-world game from Bethesda. You’ll never be shocked or amazed while playing it, but there sure are a lot of side-quests and sub-systems to distract you and fill up your winter hours.

And the characters are slightly less robotic than usual. They actually make attempts to emote instead of standing there like plastic automatons delivering woodenly-acted tapes. Still ain’t gonna win an Oscar or anything for its acting.It is a huge pile of okayness that I will probably put hours into, finish the main quest, snark about it, and do about a third of the sidequests of. And every moment I run out of action points and have to do the realtime combat up close, I’ll wish I was playing Bloodborne instead, because holy crap the weapon swap method is so awkward.

I’m also just never much of a fan of the post-apocalypse setting tbh. I keep on looking at its dingy, run-down future and wishing I was playing a similar free-form game set in a bright, happy, optimistic future. Something best summed up as “GTA Coruscant”.

(There was an actual open-world rpg set among the scumlings of Coruscant in the works for a while, but it got canned despite looking pretty promising. That makes me sad every time I think about it. But it doesn’t have to actually be the Star Wars license; I’d be happy with any giant future city full of aircars and ray-throwers and aliens and a customizable PC and sidequests.)