brainwagon "There is much pleasure in useless knowledge." — Bertrand Russell


Nifty “demo” on an unusual platform

There is a segment of the computer art culture which works on creating "demos": short bits of combined computer animation and music which play on computers. They are often praised for being clever and short. They seemed to start back during the time of the Commodore 64 and other 8 bit computers. But check out this demo to see what's possible using an 8 bit computer today, without any dedicated sound or video chips at all.

Addendum: Dan pointed me at the full write up on the project, which includes a fairly basic schematic.

Filed under: General No Comments

Homemade Transistors?

My excursion into nostalgia has me researching homebrew transistors and tubes. Today, G3CWI mentioned this article about homebrewing transistors on the GQRP list. The method isn't quite as "from scratch" as I would like: it basically uses the innards of a diode to make a point-contact transistor. Something that comes a bit closer to real from scratch construction are these zinc oxide negative resistance oscillators and amplifiers. Okay, okay, I can't make galvanized sheet metal any more than I can transistors or diodes, but it feels closer to bare metal because it uses, well, bare metal!

Filed under: Amateur Radio 2 Comments

Internet Archive: The Radio Amateurs Hand Book (and more)

Here is a link to Frederick Collins' 1922 version of The Radio Amateurs Hand Book. Neat.

Addendum: Radio telephony for amateurs also appears pretty cool. It was published in 1922, and includes a circuit for a regenerative receiver, which I recall was invented only around 1917.

Addendum2: Can you tell I'm on a crystal radio kick today? Radio phone receiving: a practical book for everybody also looks like it could be nice.

Filed under: Amateur Radio No Comments

Working the QRP repeater on AO-51…

This week, the powers that be have enabled the second repeater on AO-51 for use. Uplink is on 145.88 and the downlink is nominally on 435.150 in addition to the 145.92 and 435.300 which are its normal frequencies. Apparently not a lot of people know about this schedule change though, because the only person I managed to get was W0PD, Michael in EN32. It was kind of an odd couple QSO, him with a TS2000 and 13 element beam antennas with automatic rotators, and me, with my HT and a handheld antenna, standing in my front yard. 🙂 I managed to lose him for a few minutes in the middle, but regained him at the end. Anyway, you know the drill, here's my recording:

March 25, 2008, on AO-51, the QRP repeater…

I'll be trying to work it on College Night, which is coming up on Thursday. Go Ducks!

Filed under: Amateur Radio No Comments

Bunny Torture…

Not real bunnies. Just chocolate bunnies. Happy Easter.


Low western pass of AO-51…

I worked the fifteen degree pass to the west of AO-51 tonight. Not all that great, was hoping to get someone from Hawaii, but alas, nothing doing. Still, I got WB6YTE (whom I've worked before) and N7JK (who I don't think I've worked before). Considering the low pass, my hand held arrow, low power and high horizons, I consider this a victory. 🙂

March 23, 2008, Low Western Pass of AO-51.

Filed under: General No Comments

I’m genuinely sad….

I must admit, part of my fascination with computers and mathematics has to do with my early exposure to Martin Gardner's absolutely fantastic Mathematical Games columns in Scientific American. As a grade school student, I remember reading these columns and through them, discovering for the first time the actual excitement of mathematics. It's hard to explain to people who don't share this particular penchant for mathematics, but there it is. Mathematical Games was important.

When Gardner finally retired from Scientific American, one of his eventual replacements was A.K. Dewdney, who renamed the column to Computer Recreations. While no one could replace Gardner, I found Dewdney's columns to be fun and thought provoking. I have several of his books.

And here's what's sad: Dewdney is apparently has decided to become a 9/11 denier.

Jeffrey Shallit attended a "debate" where Dewdney was a speaker. He wrote it up in two parts: Part 1 Part 2. It's sad. Really, really sad when someone you respect shows that they don't deserve it.

Filed under: General No Comments

The FFT Demystified

Here is a good explanation of the FFT. I have used FFT libraries before, but I never really bothered to code one myself.

The FFT Demystified.

Filed under: Math 1 Comment

HF SDR receiver designs…

This link came across the softrock mailing list. Preserved for its many cool ideas!

HF SDR receiver ideas from YU1LM

Filed under: Amateur Radio No Comments

Courteous AO-51 Operation

I like working AO-51. It's the easiest of the easy satellites, with strong signals, little fading, and is workable with small handheld antennas or mobile rigs of the sort that many hams already have. Unfortunately, it's not always the most courteous place to operate. All sorts of impolite operation seems to be the norm, especially when the satellite is busy during the "gut passes" over the middle of the U.S. I was bitching about this on the #amsat channel, and others agreed. One person, Ben N1WBV, was smart enough to realize that it might be good to collect our suggestions on how to be polite, and write them up. So he did:

Courteous AO-51 Operation

This was more or less concieved one night in #amsat while discussing the operational issues on AO-51. The satellite is a very good, very easy satellite to get into, however, the more people jam on, the harder it is for people to use it. So, myself, John (KB2HSH), Charles (N3CRT), and Mark (KF6KYI) all tossed around ideas on what is more a less a good "code of conduct" for AO-51 operation.

Feel free to circulate this widely.

Filed under: Amateur Radio No Comments

Jörg’s useful and ugly FXT page

Well, my excursion into FFT multiplication the other day left me with some more interesting questions, including trying to find out more information about the integer version of the FFT called the NTT (number theoretic transform). Instead of computing the transform to an orthogonal basis consisting of the complex roots of unity, the NTT transforms to a basic formed by discrete vectors over an orthogonal basis consisting of the primitive roots of some prime power. Any of that make any sense to you? Yeah, it's pretty hard going for me too, requiring me to dust off some of my number theory knowledge that has been dormant for quite some time. But while digging, I found this link:

Jörg's useful and ugly FXT page

Jörg Arndt is working on a textbook which appears chocked full of good stuff that actually has to do with computing things (as opposed to the stylish modern trend of merely using gigaflops of compute power to wait for mouse clicks). Very neat stuff: I suspect that if I read the chapter on the NTT a few more times, I'll have it figured out.


Sunday Afternoon AO-27 Pass

It has been quite some time since I worked AO-27: the passes usually occur in the early morning and early afternoon, which isn't all that convenient for me. But today I happened to be around for the pass, so I gave it a try:

March 16, 2008 pass on AO-27

Worked W6ZQ, DM42 (which I originally got wrong as W7ZQ), W5YM in EM26. Heard KA6RAW in their faintly, as well as lots of the regulars, including neighbor W6ASL, N6PAA, and others. And said "Hi" to Mark, WA8SME.

Filed under: Amateur Radio No Comments

2^32582657-1 is prime

In fact, at the moment, it's the largest known prime, with over 9.8 million digits. As part of my pi day celebration yesterday, I was trying to review how I might speed up my C code which calculates pi to large numbers of digits. Most of the fast ways rely on fast multiplication, utilizing the FFT algorithm. I wasn't sure how that really worked.

So... I decided to write a program to learn and test my knowledge.

Rather than compute pi though, I thought I might try a somewhat different but similar task that relied on big number computation. I remembered that Fabrice Bellard had an obfuscated C code entry that used an integer Fast Fourier Transform to print out the largest (then) known prime. It's really quite nifty. I decided to try to implement a similar thing, but rather than starting with his obfuscated code, I decided that I'd try to use the FFTW library to do the same.

It's a tiny bit tricky: after all, we are using a floating point FFT to multiply large integers, and getting the precision issues nailed isn't entirely obvious. My original idea was to represent the large numbers in base 100000 (giving five decimal digits per place) but for reasons which aren't entirely clear to me, when computing the current largest prime, I seemed to run out of precision. Limiting myself to base 10000 seems to have cured the problem.

My program seems to work (at least minimally) now. I can compute Bellard's number (2**6972593-1) in about 9.7 seconds, and the largest known prime (2**32582657-1) in about 53 seconds. Ironically, such numbers are really easy to output in base two: they are just lots of ones. But to convert them to base ten for formatting in the way us humans like is much more complicated.

The final output looks like:

... 181631 lines deleted for brevity

I have double checked this against the official value on, and it matches precisely. I know that the program hides at least one gross inefficiency still: I suspect that I can actually compute the large prime in just about twelve seconds. But my head hurts for the moment, and I think I'll pass for now.

Filed under: Math, My Projects 2 Comments

Tomorrow is pi-day….

Tomorrow is 3/14, known as pi day, or Albert Einstein's birthday. How better to celebrate than with a script in pi-thon?

#!/usr/bin/env python

from itertools import islice

def g(q, r, t, i):
        while True:
                u, y =3*(3*i+1)*(3*i+2), (q*(27*i-12)+5*r) // (5 * t)
                yield y
                q, r, t, i = 10*q*i*(2*i-1), 10*u*(q*(5*i-2)+r-y*t), t*u, i+1

def pig():
        return g(1,180,60,2)

p = pig()

pistr = ''.join([ str(x) for x in islice(p, 10001)])

print "%s." % pistr[0]

def byn(s, n):
        return [s[x:x+n] for x in range(0, len(s), n)]

for line in byn(pistr[1:], 50):
        for group in byn(line, 5):
                print group,

Filed under: Math No Comments

AO-51 pass…

Nice high pass this evening, got a few people. Pass seemed a bit tougher than normal, I was waving the antenna around alot trying to get the best polarization.

N6TWW CM98 Mike

Heard WB7AEA, but he seemed deaf to my appeals....

AO-51 on March 12, 2008

Filed under: Amateur Radio No Comments