tl;dr: it is good, go see it, it made me give a fuck about this franchise again, I’m going to go see it a second time. No spoilers.
Mostly-non-spoilery commentary beyond the cut.
tl;dr: it is good, go see it, it made me give a fuck about this franchise again, I’m going to go see it a second time. No spoilers.
Mostly-non-spoilery commentary beyond the cut.

Stuff I drew over the year. I gave preference to non-Rita stuff to create some variety; otherwise every month except for June, November and December would have something from that project in it.
I was working on the image finished in October for much of the year. I know I was working on it in May, when I sat in the hospital keeping my mother company for the last few weeks of her life.
Which rather explains the blank space in June.
Further Confusion is coming up soon, and I’ll be holding down a corner of a friend’s booth doing the odd badge on my new Tiny Printer. This year’s theme is “Cafe FC: A Classic American Diner”, which honestly does nothing for me, Happy Days is not my nostalgia. But. What was going on in cartoons back then? Jim Flora! Mary Blair! UPA! And all that other crazy semi-Cubist stuff. I can totally dig that.
So I googled up some inspiration, and started doodling.

(These aren’t actually on purple paper, I just photographed these under the colored lights in my living room. Rollerball pen with highlighter.)
I’m not sure I’ll go full 50s abstract. I like looking at that stuff but it’s not in my blood like it is for some of my animation school buddies. But there are definitely stylistic tricks I can use to give a distinct “fifties graphics” feel to my normal shapes. Pull a palette off of some Flora album covers, pick a few different brushes based on things I see in collections like this along with some fonts, and I’ll be ready.
I may also consider having a secondary theme of “your Fallout fursona” because that sure is fifties-flavored, and it’s pretty topical. Maybe just slip one of those into my sample badges. I don’t want to be drawing Your Vault-Tec Guy Fursona though.
(My other alternative theme idea was “50s sci-fi” but honestly I already did that when I did promo art for FC2013 whose theme was “Furbidden Planet”. Somebody on the FC concom must really love fifties retro, I guess.)
Next step: draw up a badge for myself, and for a few friends, as samples. If I go with the rough up there maybe I’ll just describe my take on the theme as “Space Age Bachelor Pad”; it’s a grown-up party let’s all get drunk until someone puts a lampshade on their head.
Today, I spent some time setting up some stuff for my upcoming comics. If you’d like to follow them on various social media sites, now you can:
Five Glasses of Absinthe [NSFW] – facebook, tumblr, twitter, tapastic
The Drowning City – facebook, tumblr, twitter, tapastic
The Tapastic links will only be updated when full chapters are completed.
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.

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

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.

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

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:
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.)
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.
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.

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.
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.