Monday, October 31, 2005

 

Audio::Radio::Sirius 0.01 released!

And I'm already planning 0.02 :)

If you're interested, here's Audio::Radio::Sirius 0.01 on CPAN. I uploaded it last night (at 3 AM) and it was processed shortly later (within 30 minutes). I also submitted an application to be included on the module list, we'll see how that goes.

I expected this barrage of emails from the automated builders but so far nothing. There is a big backlog and tons of packages get updated every day. We'll see what happens.

There's still some legwork to be done in the module. I need to implement my gimpy events system, clean up the TX/RX code, and implement a bunch of events I haven't coded yet.

Anyway I came to work all excited to use CPAN to install my module and got a rude awakening. The old CPAN module doesn't recognize Module::Build created modules. BUMMER! :) Module::Build has a built-in remedy for this situation in the form of Module::Build::Compat. It writes Makefile.PM files that CPAN can use to grok data about your module and install it in a way it understands. There are three modes of operation - traditional generates a MakeMaker makefile.PM based on your Build.PM. Passthrough just passes through the Makefile.PM arguments to build.pm (after translation). It sounds like either will work for me since my Build.PM file is very simple. I'll have to test this some.

Another idea - I can't really setup automated tests of the big parts of the module, but there are some things I can do to test the smaller parts, like the checksumming and many of the handlers... these things are somewhat fragile as well.

Saturday, October 29, 2005

 

Notes on creating a perl module on Win32

ActiveState is great, there's no denying that. Their ActivePerl port is top notch. Windows itself is a bit of an issue. Normally you stick with PPM and generally this will have all the packages you need.

Suppose you decide to create a module though. The biggest problem is documentation - it's all over the place. Here's the steps as I have found so far:
I'm pretty excited. Hopefully this module thing will play out well. There's a lot to think about and a lot of testing I need to do. Gotta get well medicated and keep diving in.

Thursday, October 27, 2005

 

Satellite parts and Perl module design

The SIR-ALP1 arrived today from ebay. UPS was 1 day late which hopefully will result in some money back for me.

The replacement part from rush2112.net went in with no problem at all. Sirius radios seem to be designed in two halves - the tuner, a standard component common to virtually every radio, and the UI end. This is confirmed in the sportster, the starbase and the Sirius connect series. Protocol analysis of the data between the tuner and the "front end" has revealed that the protocol is the same in all three of these tuners. It's not a stretch to imagine that every other radio has an identical tuner built in.

I'm starting to look seriously at the module development. I registered an account on Perl PAUSE and am poring over the guidelines and directions. I have two XM modules to base my design on - Audio::Radio::XM::PCR and Audio::Xmpcr. I have reviewed the former first and the code looks good, except for one thing that is nagging me. This design seems destined to be threaded. These Serius tuners are very chatty. Data is going back and forth all the time about all kinds of info - signal strength, what's playing on every channel, the time, and other info (probably the sports scores data). The PCR is similar in this regard. The module I looked at had a monitor method that was designed to be called in a loop. This is sloppy IMO and how efficient could it be? On the other hand, how many modules force threading on you when you instantiate an object? I suppose it could be optional but I'd still like to see some precedent. I need to review Audio::Xmpcr.

 

First parts for home satellite system arriving

Got the Sirius mod from rush2112.net in. The alpine tuner is set to arrive tomorrow. My house is being tiled at the moment and I have to stay home during that process. So, I will have time to work on the Perl code needed to support this crazy idea. How exciting for me!

Surfing around sparkfun.com makes me want to learn a lot more about Electrical Engineering. I checked and the local community "collage" does indeed have a couple of Electrical Engineering classes. Registration is in November... The only hesitation is the intro to EE prereq... 5 credit hours of learning V=IR probably. If I can get my friend Bill to sign up I'm in. On the other hand he may take Physics next semester and seeing him in intro physics might be too funny to miss. Sparkfun has most of the parts you would need to make your own GPS enabled GSM MP3 USB LCD cell phone with accelerometer. And don't we all?

Wednesday, October 26, 2005

 

Another stupid batch trick part 2

A coworker astounded me today by showing me this lovely batch syntax:

set scriptname = %~n0
set scriptnamewithext = %~nx0

Damn it Microsoft, did it occur to anyone over there to document this? So frustrating. If it is documented, it's not in "help set" or the Windows XP help file. It's also nearly unsearchable due to being loaded with special characters. I did find plenty of usage of this technique on Google though so I'm probably the last one to know about it. The ones I found:

d-drive
p-path
s-short filename modifier
n-name
x-extension

Saturday, October 22, 2005

 

Home satellite radio distribution

Here's my great idea for distributing satellite radio around and about my house (and also to my desk at work).

Parts:

* SIR-ALP1 Sirius Connect receiver for Alpine head units
* RS-232 mod for SIR-ALP1 from rush2112.net (+ power supply)
* Ramsey FM10C FM transmitter (w/power supply)
* Icecast2 server for Linux
* Darkice streamer creating MP3 streams
* Need to create a whole buncha Perl libraries to communicate with the Sirius gear - analogous to CPAN's Audio::XMPCR

Right now my concerns are with the FM10C. I will be broadcasting Howard Stern to various radios around my house. I know the FM10C is strong enough to do it. My concern is that it will leak too much and be scrutinized by someone else. I have searched and searched the Internet and FCC regulations themselves and it seems that obscenity and indecency regulations don't apply to part 15 very low power devices. This seems to be confirmed by the fact that nobody has been fined for playing George Carlin on their Griffin iTrip. In fact many Sirius Howard Stern listeners will be listening via the FM transmitter built in to plug and play radios.

A bit more - the FM10C should meet or exceed the part 15 requirement of no more than 250 microvolts per meter at 3 meters distance. This puts me square into the consumer/hobbyist realm of FCC licensing. FCC indecency and obscenity regulations apply to broadcast license holders, not individual broadcasters. So these things shouldn't concern me, hopefully. I'm going to keep looking. Don't take this as legal advice, BTW, these are just my probably inaccurate conclusions.

Wednesday, October 19, 2005

 

Mmmm... bread


In the tradition of my friend and fellow blogger Jeff, I am going to post some pictures of food. I made bread this weekend...

Well, I'm not sure if this can be called making bread, but I did it. Sort of :) I do have a tip for checking yeast. Next time you pull that old bread mix out of the pantry, empty the yeast packet into some warm water and add a teaspoon or so of sugar. If the yeast is even partly alive, within about ten minutes you'll see some activity - bubbles which hopefully escalate to a little bit of foam. This is good. Add the whole yeasty business to your dough and turn it on. Even if 3/4 of the yeast is dead you've "awakened" enough of it to reproduce and "goodify" your bread. (I've placed the highly technical terms in quotes for your convenience.)

The finished product! Golden and delicious. It's really best when it's still warm enough to melt butter by itself. Proof - I haven't eaten any since Sunday :( Posted by Picasa
BTW - it's really sad that Blogger's picture publishing tools still suck. To post multiple pictures you have to use "Hello" (a windows only app) and an undocumented feature (the double-pipe trick) to put more than one picture in the same post. They added Blogger to Picassa but for some reason it only allows one picture at a time. Does Google hate Blogger?

Monday, October 17, 2005

 

The new project

So far I'm up to 1729 lines of code, including comments and blanks. That's pretty depressing considering how long I've been working on it.

I used this command to check:
wc `find . -iname "*.pl" -or -iname "*.cmd" -or -iname "*.bat" -or -iname "*.pm" -or -iname "*.ini" -or -iname "*.txt"`

Although, for comparison sake, it is replacing 209 lines of code...

Sunday, October 16, 2005

 

Yes, I know, the Prius stalls

Two things really bug me about all the news articles about the Prius stalling issue.

First, it's a hybrid. If you think about it, a hybrid is exactly the sort of car you want to be in if it stalls. If the Internal Combustion Engine (ICE) doesn't work, the battery motor can at least get you to a safe place in a pinch. I had my ICE fail to start once when I was driving with low fuel. I was really near a gas station and just pulled in. Even if I wasn't, the battery should be able to move you up to, say, 1/4 of a mile I'd think.

The main thing that bothers me about this is that it's a story at all. Recalls usually only make the news if they cause explosions or rollovers. This is a stalling problem. I think the real reason is that deep down, people want Hybrids to fail. I can't tell you how many people tell me about this "news" item. I have heard about it probably 15 times, including 3 times from one coworker. "GOOD, HYBRIDS HAVE PROBLEMS. Glad I bought my 15 MPG SUV!" It must be a relief, that, yes, my personal worst MPG for one tank is 45, but hey, my car can stall. Ugh. I just want to smack people.

Saturday, October 15, 2005

 

Goodbye, hello

Michelle's blog got eaten by some new gamergurl. On the upside I found Bill's blog so I added it to my blogroll. Zero sum I guess

UPDATE: I just noticed that Bill's blog is 99% dead, so oh noes! I lose after all :'(

Friday, October 14, 2005

 

Autoupdating software for free

OK, so I allegedly work for a company that has the best known software updater in computers today. Allegedly.

In any case, the situation came up at work where I need to update a Perl solution used internally. This perl solution consists of about 50 scripts (hard to count how many with these CVS folders everywhere) that perform various functions.

Some of these files have to be edited by the user, but the overall solution was written in Perl for a reason - users should be able to tweak it. So, consider that any of those 100 files might be updated by the end user. This adds a tough requirement - it has to be able to handle user modified files in a sane way.

Part of the problem is my lazy programming. I started out with a config file that was a Perl script wearing a fake moustache and glasses. Not much of a disguise but it turned out not to be so bad for my three test subjects. Well, when updating, if I add a new config variable, it would somehow have to make it's way into that script.

First I tried CVS, because I thought that the CVS merge could fix everything. It can't. :) The merge, when it worked, was OK, but there are some files that will always be in conflict, and a config file is one of them. Any time a user changes a default option from "no" to "yes", that line goes into conflict. When CVS puts a file in conflict, that is CVS talk for wrecking your lazy perl script config file. Additionally I think CVS has some high overhead, and setting up a pserver took entirely too long.

I started looking for how to disable that conflict handling behavior, and found a few things that seemed possibly promising, such as cvswrapper and other options... but ultimately it was a square peg that didn't fit in the slightly smaller rectangular hole, or ... something like that.

CVS led to a 5 minute investigation of subversion but I quickly found this Slashdot article which reminded me about rsync. D'oh!

rsync isn't perfect here either, but it's closer. It has an option to skip files if the modified time is newer. This is 99% what I want except that if I update the default config file, it will overwrite the modified version the user installed. SO, I need a "builder" script that installs the product in the rsync repository and sets the modified dates back, I'm thinking about 20 years to account for wackiness on the target machines. In QA it's not uncommon to goof around with your date to test... date stuff. So 20 years should be pretty safe. I hope :)

 

Visual development environments

I totally had this great idea for a World of Warcraft mod. It was so good and I think the implementation will be so easy that I spent about 3 hours yesterday poking at the WoW UI. The problem is that there's no Visual Warcraft UI editor. I have to guess at where controls go, how big things should be, etc. Sorry, but I'm not visually oriented at all and trial and error is not appealing when reloading the UI takes so long. Not to mention it isn't working too well for me but that's probably because I have a bunch of broken mods or something.

On a positive note, the UI is fully modular and very extensible in a friendly and logical way. Now I just have to wait for the WoW UI designer to come out. And do a bunch of coding. My estimate for my uber mod: 200 lines of code. Minus all the xml shit I mean.

Wednesday, October 12, 2005

 

Google Reader

Had a chance to play with Google Reader today. It's pretty neat. I'd like to see some sort of grand unified interface to Google, particularly the reader, mail, and news. The reader interface is pretty slick and has some elements that will probably migrate to gmail. Speed is very good. I like a centralized location for checking friends blogs, especially those who don't update often. The rub in integration will be somehow keeping the clutter down.

If anyone at Google reads this, please make your stock go back up :) Allow me to suggest more Wifi rumors or something. Maybe you could merge Google talk with ICQ or something. TIA

 

Ads by gooooooooooooooooooogle

I posted a million ads here. I COULD MAKE UP TO 5 CENTS A DAY!!! I figure I'll replace my comment spam problem with even more advertisements.

BTW - are we on Web 2.0 or Web 3.0? I forget which version. Come on, Web! If you don't send out CDs like that other service how will people know what version you have out! I'm holding out for Web 10.0 TopSpeed Ultra with ActiveAJAX

 

Comment spam

Been getting tons of comment spam. Blogger just put up a note about enabling word verification. Let's see if that makes a difference. Weird anyway since they have nofollow on comment links, so spam is pointless... Guess that won't deter a stupid spammer.

Monday, October 10, 2005

 

Another stupid batch trick

I had to determine the directory where a .CMD file lives from within the CMD file. This is very hard to search on. $0 has the full path (like "C:\PATH\FILE.CMD") but there didn't seem to be any other environment variables that had it.

I finally found a Microsoft article (Q121387) which shows how to find it:

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q121387

Good luck finding this one. Took me 20 minutes in Google :) The secret:

:: change to my home directory
cd $0\..
Man is that ghetto :)

Friday, October 07, 2005

 

Getting data into environment variables

After all this time, I still have to write DOS batch files now and then. The one I'm working on now requires that I populate environment variables from a text file. This one was tough to search out with Google but eventually I found a page that lists many, many ways to read data from a file to a variable in batch:

http://www.student.northpark.edu/pemente/sed/bat_env.htm

There are two relatively easy solutions there - strings.exe, which is under a bit of a cloud due to Ziff Davis sending C&D letters to people using their 20K DOS program from 1992, and a method that uses SED to construct batch files on the fly which are called from the first batch file. Oy! :)

Thursday, October 06, 2005

 

I believe you have underestimated my sneakiness

For the last ten years we've seen a constant brigade of articles starting with the phrase "Linux isn't ready for ______". Once upon a time the word was servers, but at this point Linux has done a pretty damn good job of penetrating the server market ready or not. Now the blank is desktop.

For those already on the bandwagon, it feels like being on the edge of the first wave. For the first time it seems we're on the cusp of Linux being ready for the desktop. There are a lot of technologies converging which only serve to ready it more. In a way it almost seems as though it will sneak up and be "ready" before many see it coming.

- Accessories
Anyone who hasn't looked at the FOSS versions of their favorite accessories in over a year should immediately do so. kopete is at least as glitzy as Trillian and gaim is rock solid. It's nice that FOSS hasn't forgotten about things like IRC as well. xchat is like the Firefox of IRC offering the bulk of it's functionality via plugins and scripts. Noatun has a great interface for multimedia although winamp fans may be drawn to xmms.

- Desktop environment
The difference between logging in to kubuntu and logging in to Windows is kubuntu's KDE login looks a lot nicer than Windows. The funny thing about gnome vs. kde is that to a new user it probably doesn't matter that much. They have come together enough that installing an application results in new menu items in both gnome and kde. There are important differences in how administrative tasks are performed but the result is you won't go wrong by sticking with what your distro installs. I use KDE and Mom would have no problem here. The future looks even better (and simpler) with KDE 3.5 and beyond. Simplicity good

- Office apps
I spent some time in openoffice calc, working on a spreadsheet the other day. The application was very responsive and had all the functionality I expect from a spreadsheet. It surprised me by continuing to perform when doing more advanced tasks like a few complicated formulas and macros. OO 2 is right around the corner and they say MS office compatability is even better. Furthermore, the Mass decision to standardise on opendoc is clearly a boon here, although it won't be long before MS introduces opendoc.

- Web
Firefox. Enough said. FF extensions are platform independant. I also have acrobat reader and flash and if the flash audio stayed in sync with the video I'd never have to use VMWare to read somethingawful.com :) I expect this to work virtually flawlessly in 6 months.

So, when will the naysayers decide it's ready? Will it be the point when 50% of new games are released for Linux as well? Perhaps when Dell offers a desktop distribution preinstalled with a new PC? Some people will never switch, and they don't have to. Certainly, though, your choice of desktop influences how you look at the situation. So, perhaps the "not ready" articles will live on.

This page is powered by Blogger. Isn't yours?