Saturday, July 17, 2010

More than the sum of it's singles

Listened to a couple of whole albums on the 2 hour trip back from my parents' place tonight. Was listening to Live's "The distance to here" and thought to myself "There's scarcely even a sniff of filler on this disc". It an actual album that works end-to-end, in fact probably more so than as a bunch of individual tracks.

So do (m)any young-uns buys or listen to albums these days, or has the 99c track on iTunes destroyed this experience for future generations?

Here endeth the old-guy-back-in-my-day rant. Feel free to go all internet-music-critic if you must, but the particular album isn't really the point. Get off my lawn.

Monday, April 12, 2010

Little LEDs and Spaceships

I was recently asked by a friend about helping to dress up some models for table top gaming. Putting small electronic bits'n'bobs'n'batteries inside various objects is something I'm not unfamiliar with, but I hadn't attempted this particular operation before.

The models aren't truly tiny, so I could use 3mm diameter LEDs for the undercarriage lights, and 5 diameter mm ones for the engine lights.

Overall, it think it turned out not too badly, although I haven't yet had any feedback as to how he went in the painting/decorating section yet. If nothing else, he should definitely be in the running for the "most liberal use of hot melt glue" category.

I've put a few more detailed pics below for those that care to get up close and personal. The top two are a little blurry as I turned off the flash to better show the LED's, but was too lazy to set up the tripod. The detail shots are all sharper.

Not shown are the battery packs. I used a 6V battery a little thinner than a AAA and about a third the length (9.5 mm diameter by 15 mm). I used heat shrink hold on the leads to make it into a flying-lead version so as to connect to the mini terminal blocks, for a solder-less battery swap for the end user.

Sunday, March 7, 2010

Image Processing with Python

I needed to turn this:

into this:

Why? Well, my wife wanted to paste smiley faces onto some triangles, rectangles and other shapes. The set with the outline is great, but she wanted to put faces onto triangles, rectangle's and some other shapes too. (She's a teacher, the shapes were warring, harmnony day is approachng and, and ..... it's complicated, trust me). Anyway, the borders looked a little odd.

As there were 60 of them to do (15 expressions in 4 different colours), I started thinking I'd figure out how to do some python scripting from inside GIMP, but after half an hour of futzing about, I decided that was too messy, and just decided to process the images directly. This is pretty easy actually. One of python's included batteries is the "Image" library.

I decided to tackle it thusly; modify any pixels within a specified annulus to transparent. I originally intended to check that the pixel was black before modifying it, but I forgot, and in this case, it worked just fine anyway.

Here's the code I used:

# Removes a dark circle from smiley faces
# Replaces black pixels in a specified annulus with transparency
# Doesn't do anti-aliasing

import os
import sys
import Image
import math

# Parameters to modify pixels in an annulus
xMid=53 # Centre position
yMid=53 # (origin)
rInner=45.0 # Inner radius
rOuter=54.0 # Outer radius
xMax=106 # (Image size)-1

inputFile=sys.argv[1] # Input image file
outputFile=sys.argv[2] # Output file, will be overwritten if it exists

thisImage =
pixelArray=thisImage.load() # Use load method for pixel addresing mode

for thisX in range(0,xMax):
for thisY in range(0,yMax):
thisRad = math.sqrt((dX*dX + dY*dY))
if ( (thisRad>rInner ) and (thisRad

except IOError:
reportMessage="Failed", "PNG")

print "%s:Processing [%s] to [%s]" % ( reportMessage,inputFile,outputFile )

I've not shown the script for iterating through the 60 different files, but that's not really the point of this post. This code works with two command line arguments, the input file, and the destination file.

BTW, none of this is meant as a slight on the GIMP's scripting capabilities, I just have little experience with them, and decided to go with something more familiar.

Monday, March 1, 2010

A Cyberspace Independence Declaration

The "This Week in Google" podcast I just listened to mentioned the "Cyberspace Independence Declaration", written by John Perry Barlow. Leo read some excerpts and I thought a link to an audio version I enjoyed would be in order.

Link to MP3 audio, ~5 MB.

The reading is by Jan Ruback, and included as a bonus chapter at the end of his reading of Cory Doctorow's collectedion, Content. (Highly recommended, BTW) It's available a variety of audio formats on this internet archive page, the second bonus item after the numbered chapters. You can also play it directly from the embedded player on the page if you're so inclined (It's chapter 32 in the player).

The full text version is available, with a little background on the eff site. Here's the obligatory wikipedia article.