Wednesday, August 31, 2011

A bit of TV punditry

This week I had an opportunity to join the collective commentating about what the resignation of Steve Jobs from the position of Apple CEO will mean. The interview went to air on Australia Network Newsline around Asia.


Normally I chat on radio so a bit of TV experience was interesting. Everyone looks good on radio. For TV, and particularly high definition, things like makeup and lighting are big topics. Cameras these days are remote controlled and the earpiece (I was interviewed remotely) is a tiny wireless thing you stick in your ear.

On Apple without Jobs? My view is that Apple will be fine for 3 - 5 years while the products currently in development make their way out the door, after that I'm worried that no-one will have the guts to say no to a product that isn't quite perfect.

If you'd like to see what I said, it will be in the Australia Network archive here titled "Jobs Loss". My thanks to the producer, makeup, floor manager, director and the host Jim Middleton for making the appearance easy for me.

Sunday, August 28, 2011

Blue Mountains Winterfest 2011

Just returned from a wonderful day at the Blue Mountains Amateur Radio Club's Winterfest.


A new venue this year, with more space, and it was fabulous. Lots of interesting new and second hand stuff.


Familiar faces from Dural were in attendance.


Some really great equipment in various states of working or not. I purchased some PCBs at reasonable rates.


Lots of fine discussions were had amongst the junk.






There was a working satellite station set up with steerable beams.



The Home Brew group had a small display table where I showed my "shambles" transceiver.




My thanks go out to the organisers of this event, all was very smooth and professional and the sausage sandwiches were very tasty.

Thursday, August 25, 2011

How to win at Sydney's Star City Casino

We dined last night at the Casino before attending the musical "Hair Spray". I do not have the gambling gene but am pleased to report a significant win on the night in the form of an ice-cream.


My daughter went and claimed the prise and when she finished the free ice-cream it also had a free voucher stick!

Who says you can't win at the casino.

Sunday, August 21, 2011

A wonderful weekend of #pyconau

Just returned home after a full weekend of the second Python conference here in Sydney.

 
Main hall 005
Attendance was up on last year but still has a way to go. The Wifi worked really well, thanks GitHub. Programmers seem to carry Macs these days, next is Linux and then there are a few Windows users.

  Deploying 003
There were some wonderful talks and some disastrous demos, but that's the way it goes. I came away with a big list of things to find out more about, often not the topic of a talk but something that came up along the way.

  Scipy 002
Great to see two whiteboards full of Python jobs (well, one PHP job too).

  Job board 001
Thanks to the organisers once again, it was super smooth and professionally run. Some things that caught my eye: Nginx web server, Gunicorn web server, requests module, new relic performance monitor, pymite embedded, CoolTerm serial terminal, weatherboard, USB Bitwhacker, Sublime text editor, map-reduce for Google App Engine.

This year the videos are up on YouTube here.

Thursday, August 18, 2011

New addition to shack: Yaesu FT-7

I remember being impressed with one of these when I was young and jumped at the chance to pick one up for $180. The FT-7 is totally analog, no digital anything, and they have a good reputation for a nice sounding receiver.

  R0014031
This is not a "B" so it's 10W out but that's fine for me. The case has a few "dings" and there are some holes presumably for adjusting things, but inside it's clean.

  R0014026
One nice thing about this rig is the low receive current, 400mA, and it's said that about half of that is the dial lights.

  R0014027
This one has a few quirks, AF gain doesn't seem to do much and RF gain seems very dramatic in its operation. Something is loose somewhere and the audio level jumped up dramatically when I moved the lid and has stayed that way. The S-meter seems to read rather high most of the time as well.

  R0014028
I heard lots of stations on 40 and 80m this morning but haven't had a chance to have a contact and get a signal report. The receive audio is indeed very pleasant although some QRN from distant lightning was more obvious than on more modern sets. The old "Fox Tango Seven" seems to have a few fans around which is great for a set that came out in the 1970s. It even has gears:

 
R0014030

The excessive audio gain was fixed by re-seating the audio board (the edge connector must be a little dirty). The only remaining issue is that the S meter reads a minimum of S9. I suspect something in the AGC area.

Thursday, August 11, 2011

Spintron centrifuge

Had a blood test today at a small place and they had this nifty desktop centrifuge:

   

It's used to force the blood cells to the bottom of the tube, where there is some sort of transparent gel that holds them in place. Entertained me anyhow.

Tuesday, August 09, 2011

Wonders of the Universe vs Cosmos

200px Brian CoxIn recent weeks we've greatly enjoyed the "Wonders of the universe" program with Professor Brian Cox.

The filming has some annoying aspects: the sun is often in shot, presumably to remind us of this close star, but it is rather glarey.
There's lots of faux bad lens photography with blurred edge images and bogus lens flare.

Brian gets about, and is sometimes in remote locations for very little reason.

Having said all that, I really enjoyed the show and Prof Cox's presentation reminds me very much of a childhood hero - Carl Sagan.

Over the past few days, I've gone back and watched "Cosmos - A personal journey" by Carl Sagan.

  Carl Sagan Planetary SocietyGiven that it aired in 1980, it has stood the test of time very well. Some of Sagan's comments about global warming are amazing for their time, although his concerns about a nuclear winter have dated somewhat. The images of scientists smoking, sometimes pipes, in the workplace look hilarious.

The spaceship of the imagination is a little dated but he carries it off well. The sound track, in part Vangelis's "Heaven and Hell" is memorable.

Cox is a worthy ancestor to Sagan (who died too young at 62). I'm glad we have him on our screens.

I hope billions and billions of people get to watch these shows.

Monday, August 08, 2011

Radio Australia antenna used for reception

It works rather well as you might expect. I just spotted this video by Dallas VK3EB where he visits the Shepparton RA transmission site during an outage for maintenance and couples a receiver to the feed line.

   

Great stuff, pity it wasn't used for a QRP contact too. Dallas is a great video producer, here's another one on measuring signal strength measurements with his Pegelmesser RF level meter. 252 views.

 

Friday, August 05, 2011

House block loop antenna for 160m

At the urging of old mate Ross, VK1UN, I've run a wire loop antenna right around the suburban block we live on and I've just had a contact on 160m. I bought a roll of 100m of figure 8 electrical flex:

R0014019

It runs at fence height on three sides of the block (well short of 160m in length though):

R0014023

But at the back I run it up a tall tree:

R0014024

It's not quite long enough for a full wave on 160, so it turns out to be resonant at 2.25MHz:

R0014021

Happily, my antenna tuner is able to match it on 160m and tonight I had a nice contact with Ian, VK3XN who I figure it about 800km from me:



160 faded so we switched to 80m where I have an excellent dipole high above the house. The loop was about 2 S points worse than my current dipole, but still readable.

So, a simple loop antenna, not very high off the ground turns out to be a simple way to get on low bands in a suburban setting. Count me impressed.

Thanks Ross, and Ian for the contact.Running WSPR it appears that I'm being heard around Australia running 5W (note that VK1UN is mis-reporting me as being on 10m)

Screen Shot 2011 08 06 at 8 53 11 PM

There's quite a group on 160m WSPR on a Saturday night in Australia:

Screen Shot 2011 08 06 at 9 00 26 PM

Special thanks to VK6DZ who is hearing me 3,000km away.

Screen Shot 2011 08 06 at 9 31 28 PM

And here's what I'm hearing:

Screen Shot 2011 08 06 at 9 32 31 PM

Monday, August 01, 2011

Convert Fuji 3D MPO to Anaglyph

The cheap Fuji 3D camera has been lots of fun but viewing the pictures is a challenge. I ordered some Red/blue specs on ebay and have been figuring out how to automate conversion of the MPO files from the camera through to good quality anaglyph images. (If you have red/blue glasses this will look good, believe me). Dural trash n treasure The code is pillaged from a couple of places including here where it is mangled by the blogging software and doesn't work with the current bumpy. I've fixed it up and here it is for your entertainment:
"""Make a red-blue 3d Anaglyph image from an MPO file
Based on code from:
http://www.velocityreviews.com/forums/t357242-anaglyph-3d-stereo-imaging-with-pil-and-numpy.html
"""

import Image, ImageOps
import numpy
import sys
import os

_magic = [0.299, 0.587, 0.114]
_zero = [0, 0, 0]
_ident = [[1, 0, 0],
[0, 1, 0],
[0, 0, 1]]

# anaglyph methods from here: (fantastic demos)
# http://mitglied.lycos.de/stereo3d/an...comparison.htm

true_anaglyph = ([_magic, _zero, _zero], [_zero, _zero, _magic])
gray_anaglyph = ([_magic, _zero, _zero], [_zero, _magic, _magic])
color_anaglyph = ([_ident[0], _zero, _zero], [_zero, _ident[1], _ident[2]])
half_color_anaglyph = ([_magic, _zero, _zero], [_zero, _ident[1], _ident[2]])
optimized_anaglyph = ([[0, 0.7, 0.3], _zero, _zero], [_zero, _ident[1], _ident[2]])
methods = [true_anaglyph, gray_anaglyph, color_anaglyph, half_color_anaglyph, optimized_anaglyph]

def anaglyph(image1, image2, method=true_anaglyph):
    m1, m2 = [numpy.array(m).transpose() for m in method]
    im1, im2 = image_to_array(image1), image_to_array(image2)
    composite = numpy.dot(im1, m1) + numpy.dot(im2, m2)
    result = array_to_image(image1.mode, image1.size, composite)
    return result

def image_to_array(im):
    s = im.tostring()
    dim = len(im.getbands())
    return numpy.fromstring(s, 'uint8').reshape(len(s)/dim, dim)

def array_to_image(mode, size, a):
    return Image.fromstring(mode, size, a.reshape(len(a)*len(mode), 1).astype('uint8').tostring())

for filename in sys.argv[1:]:
    if filename.lower().endswith('.mpo'):
        print "reading %s" % filename
        basename = os.path.splitext(os.path.basename(filename))[0]
        file = open(filename, 'rb')
        data = file.read() # read both images
        offset = data.find('\xFF\xD8\xFF\xE1', 4)
        firstData = data[:offset - 4]
        leftFileName = '%s-left.jpg' % basename
        left = open(leftFileName, 'wb')
        left.write(firstData)
        left.close()

        rightData = data[offset:]
        rightFileName = '%s-right.jpg' % basename
        right = open(rightFileName, 'wb')
        right.write(rightData)
        right.close()

        nativeWidth = 3584
        nativeHeight = 2016

        desiredWidth = 1000
        fullHeight = desiredWidth * nativeHeight/ nativeWidth

        left = Image.open(leftFileName)
        left = ImageOps.autocontrast(left)
        right = Image.open(rightFileName)
        right = ImageOps.autocontrast(right)

        os.remove(leftFileName)
        os.remove(rightFileName)

        left = left.resize((desiredWidth, fullHeight), Image.ANTIALIAS)
        right = right.resize((desiredWidth, fullHeight), Image.ANTIALIAS)

        combined = anaglyph(left, right, half_color_anaglyph)
        #combined.show()
        outFileName = "%s_Anaglyph.jpg" % basename
        combined.save(outFileName, "JPEG")
        print("Wrote %s" % outFileName)

You run it like this:
$ mpo_anaglyph.py *.MPO
reading DSCF0005.MPO
Wrote DSCF0005_Anaglyph.jpg
reading DSCF0006.MPO
Wrote DSCF0006_Anaglyph.jpg
reading DSCF0007.MPO
Wrote DSCF0007_Anaglyph.jpg
DSCF0081 Anaglyph DSCF0077 Anaglyph DSCF0072 Anaglyph