Transmitting Geekdom Around the World

It’s save to say I’m a completely overloaded individual these days. I spend 12+ hours a day in the laboratory (it’s 11:30pm and I’m in lab right now), have a masters thesis to write, propose, defend, and submit all within about 30 days from today (I haven’t even actually started writing it yet), I am in the middle of being accepted into dental school (involving tons of deadline-ridden paperwork dealing with housing, immunizations, certifications, transcripts, finances, etc), somehow I have to find the time to do my taxes (1st time my wife and I will file together), and now that I mention it, yes, I have a wife at home to think about! We’ve been married a year plus a few months. I have to remember wifey things. Is an anniversary coming up? [ponders…] Wait, one just passed. I’m good. Anyway, I’ve got a TON of things on my plate, and no matter how quickly I try to scrape them off, more keep piling on. So, with all this stuff I have to do, and tons of stuff I should do, could I ever justify taking time out of my day to do stuff that I actually want to do? Yes and no.

I’ve reached an inconclusive conclusion. Although my heart yearns to get involved with with a lot of small projects, they all have to be placed on (indefinite?) hiatus. Examples of projects I’ve wanted to get into for a long time include furthering my knowledge of pic microcontroller programming, writing a python-based Pandora internet radio streamripper, completing the hardware/software for my homemade electrocardiogram (and actually using it to analyze long periods of cardiac activity), becoming an active member of the development team for an interesting piece of software (like fluxbox or inkscape or some other opensource application). More recent projects include re-coding the web-interface for this website (the current coding is ghastly, archaic, and difficult to modify without breaking the UI, which doesn’t even display correctly in IE anyway), getting into AR (amateur radio), and buying that 5” XD 45 ACP tactical semiauto I’ve been eyeing for several months now. Because I have an evergrowing list of things I want to do, and an even faster-growing list of things I need to do, I have to somehow conjure up contentment in the brief periods of free time I can use throughout my day researching these endeavors. I know it sounds silly. But, I know I can’t do all these things I want to right now… yet somehow, spending 10 minutes on the internet here and there reading up on something I want to do appeases the roaring (whining?) within my soul to do something more fun. (more fun = anything that doesn’t make BLOOD SHOOT OUT OF MY EYES like retarded paperwork for dental school or monotonous experiments in the laboratory)

One of my more recent fascinations is QRSS, a super-low power mode of transmission over the airwaves. Think about this. You get a ham radio setup which outputs at about 3 watts. “This is call sign blah blah blah blah saying yadda yadda yadaa, over, [pssht].” Ya’ got it? Now picture using a microcontroller (It’s time to break out the old pic microcontroller programming gear I’ve had in my junk boxes forever!) to transmit data (Morse code?) over the airwaves by varying frequencies and using FFT transformation (2d plot, with respect to time) to view it on the computer. Now, increase the time between “beeps”, and decrease the power. Way down. Think, 5mW. That’s how much power a laser pointer puts out. Now imagine that a homemade circuit, broadcasting from a single AAA battery at 5mW can produce a signal which can be received on the other side of the world in Australia. How freaking awesome is that? I’ve been inspired by the QRSS page here where a guy reported his efforts doing something similar. I want to try this so bad. GRR! [sigh] I have to get back to lab.

One quick news update: I’ve completely finished the investigative work required for me thesis project. Yay! This is big news. I’ve been hear almost two years! Here’s my “money shot” image. Unfortunately for you, I will not describe what it is on the internet. It will suffice to say that it’s the fruit of months’ labor of a super coding ninja money.


Hacking Into Pandora's Box

I have several current hacking projects and one of them that I keep coming back to is Pandora , the internet radio service. You tell it a song or artist you like and the service customizes a radio station just for you with music which has the same qualities as songs you like. They don’t offer mp3 downloads however, and they don’t allow you to fast forward, rewind, or skip songs. It’s a flash-based web interface, and my digging (both on windows and in linux) has led me to realize that these songs are temporarily being downloaded to the hard drive. (They’re in M4A format, which is essentially videoless MP4). The problem is that these files have garbage filenames (random letters). If I can just obtain the artist and song title to associate with each, I’ll be able to write a Python script which will allow me to copy these files as they download, assigning their ID3 tags accordingly.
I know this is possible, because I can spy XML data being transferred over my network (thanks to tcpdump) which contains all this information. The timing corresponds to the download of each subsequent M4A file. Where does this XML data go? This is the tough question. I could accept the fact that it is loaded directly into flash and begin attacking it at the TCP protocol level, but the fact is that a lot of weird files show up in /tmp which I have a hunch are these XML files. The problem is that when I go to open them, they’re blank. My theory? Pandora is downloading files and keeping them only as long as they’re needed. The M4A files are readable for as long as the song plays, then they’re deleted. Perhaps XML files are being downloaded and deleted after they’re needed (1/100 of a second later), so they’re hard to “catch”. Alternatively, I see a lot of “temp.js” files which are empty. Perhaps they’re being overwritten with /dev/null rather than being deleted…
My current approach is to write a Python script to log file activity (creations, deletions, modifications, etc.) which I hope can be run at least 1,000 times a second (am I dreaming?) to elucidate this issue. Optimal scenario: I’m able to identify XML files as they make their brief appearance on my hard drive, copy their contents, and use this data to attach meaningful names to meaningless M4A files on my hard drive.
Below, a photo of me in my quest. (I’m working on my new laptop in the confocal microscope room as tissue sections are being scanned into the computer) Yay linux. Yay python.